ID3D11DeviceContext::GSSetConstantBuffers 方法 (d3d11.h)

设置几何着色器管道阶段使用的常量缓冲区。

语法

void GSSetConstantBuffers(
  [in]           UINT         StartSlot,
  [in]           UINT         NumBuffers,
  [in, optional] ID3D11Buffer * const *ppConstantBuffers
);

参数

[in] StartSlot

类型: UINT

索引到设备的从零开始的数组中,以开始将常量缓冲区设置为 0 到 D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1 (范围) 。

[in] NumBuffers

类型: UINT

要设置 (范围从 0 到 D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot) 的缓冲区数。

[in, optional] ppConstantBuffers

类型: ID3D11Buffer*

常量缓冲区的数组 (将 ID3D11Buffer) 提供给设备。

返回值

备注

方法将保存对传入的接口的引用。 这与 Direct3D 10 中的设备状态行为不同。

不能使用 ID3D11ShaderReflectionConstantBuffer 接口获取有关设备上下文中当前绑定到管道的内容的信息。 但可以使用 ID3D11ShaderReflectionConstantBuffer 从编译的着色器获取信息。 例如,可以使用 ID3D11ShaderReflectionConstantBufferID3D11ShaderReflectionVariable 来确定几何着色器需要常量缓冲区的槽。 然后,可以将此槽号传递给 GSSetConstantBuffers 以设置常量缓冲区。 可以调用 D3D11Reflect 函数来检索 指向 ID3D11ShaderReflection 接口的指针的地址,然后调用 ID3D11ShaderReflection::GetConstantBufferByName 以获取指向 ID3D11ShaderReflectionConstantBuffer 的指针。

Direct3D 11.1 运行时从 Windows 8 开始可用,可将 ID3D11Buffer 资源绑定到着色器的数量比着色器支持的最大常量缓冲区大小多, (4096 个常量 –每个) 4 个 32 位组件。绑定如此大的缓冲区时,着色器只能访问缓冲区中的前 4096 432 位组件常量,就好像 4096 常量是缓冲区的完整大小一样。

如果应用程序希望着色器访问缓冲区的其他部分,则必须改为调用 GSSetConstantBuffers1 方法。

要求

   
目标平台 Windows
标头 d3d11.h
Library D3D11.lib

另请参阅

ID3D11DeviceContext