Метод 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), передаваемых устройству.
Возвращаемое значение
None
Remarks
Метод будет содержать ссылку на переданные интерфейсы. Это отличается от поведения состояния устройства в Direct3D 10.
Вы не можете использовать интерфейс ID3D11ShaderReflectionConstantBuffer для получения сведений о том, что в настоящее время привязано к конвейеру в контексте устройства. Но вы можете использовать ID3D11ShaderReflectionConstantBuffer для получения сведений из скомпилированного шейдера. Например, можно использовать ID3D11ShaderReflectionConstantBuffer и ID3D11ShaderReflectionVariable для определения слота , в котором геометрический шейдер ожидает буфер констант. Затем этот номер слота можно передать в GSSetConstantBuffers , чтобы задать буфер констант. Можно вызвать функцию D3D11Reflect , чтобы получить адрес указателя на интерфейс ID3D11ShaderReflection , а затем вызвать ID3D11ShaderReflection::GetConstantBufferByName , чтобы получить указатель на ID3D11ShaderReflectionConstantBuffer.
Среда выполнения Direct3D 11.1, доступная начиная с Windows 8, может привязать к шейдеру больше ресурсов ID3D11Buffer , чем максимальный размер буфера констант, поддерживаемый шейдерами (4096 констант — 432-разрядных компонента). При привязке такого большого буфера шейдер может получить доступ только к первым 4096 432-разрядным константам компонента в буфере, как если бы 4096 констант является полным размером буфера.
Если приложению требуется, чтобы шейдеру был доступ к другим частям буфера, вместо этого необходимо вызвать метод GSSetConstantBuffers1 .
Требования
Целевая платформа | Windows |
Header | d3d11.h |
Библиотека | D3D11.lib |