ID3D11DeviceContext::GSSetConstantBuffers 메서드(d3d11.h)

기하 도형 셰이더 파이프라인 단계에서 사용하는 상수 버퍼를 설정합니다.

구문

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

매개 변수

[in] StartSlot

형식: UINT

디바이스의 0부터 시작하는 배열로 인덱싱하여 상수 버퍼를 로 설정하기 시작합니다(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에 대한 포인터를 가져올 수 있습니다.

Windows 8부터 사용할 수 있는 Direct3D 11.1 런타임은 셰이더에서 지원하는 최대 상수 버퍼 크기보다 더 많은 수의 ID3D11Buffer 리소스를 셰이더에 바인딩할 수 있습니다(각각 4096 상수 –432비트 구성 요소). 이러한 큰 버퍼를 바인딩하는 경우 셰이더는 버퍼의 처음 4096 432비트 구성 요소 상수에만 액세스할 수 있습니다( 4096 상수가 버퍼의 전체 크기인 것처럼).

애플리케이션에서 셰이더가 버퍼의 다른 부분에 액세스하도록 하려면 GSSetConstantBuffers1 메서드를 대신 호출해야 합니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d11.h
라이브러리 D3D11.lib

추가 정보

ID3D11DeviceContext