다음을 통해 공유


ID3D11Device::CreateGeometryShader 메서드(d3d11.h)

기하 도형 셰이더를 만듭니다.

구문

HRESULT CreateGeometryShader(
  [in]            const void           *pShaderBytecode,
  [in]            SIZE_T               BytecodeLength,
  [in, optional]  ID3D11ClassLinkage   *pClassLinkage,
  [out, optional] ID3D11GeometryShader **ppGeometryShader
);

매개 변수

[in] pShaderBytecode

형식: const void*

컴파일된 셰이더에 대한 포인터입니다.

[in] BytecodeLength

형식: SIZE_T

컴파일된 기하 도형 셰이더의 크기입니다.

[in, optional] pClassLinkage

형식: ID3D11ClassLinkage*

클래스 링크 인터페이스에 대한 포인터입니다( ID3D11ClassLinkage 참조). 값은 NULL일 수 있습니다.

[out, optional] ppGeometryShader

형식: ID3D11GeometryShader**

ID3D11GeometryShader 인터페이스에 대한 포인터의 주소입니다. NULL인 경우 다른 모든 매개 변수의 유효성이 검사되고 모든 매개 변수가 유효성 검사를 통과하면 이 API는 S_OK 대신 S_FALSE 반환합니다.

반환 값

형식: HRESULT

이 메서드는 다음 Direct3D 11 반환 코드 중 하나를 반환합니다.

설명

셰이더를 만든 후 ID3D11DeviceContext::GSSetShader를 호출하여 디바이스로 셰이더를 설정할 수 있습니다.

Windows 8부터 사용할 수 있는 Direct3D 11.1 런타임은 CreateGeometryShader에 다음과 같은 새로운 기능을 제공합니다.

다음 셰이더 모델 5.0 지침은 Direct3D 11.0 런타임에서 픽셀 셰이더 및 컴퓨팅 셰이더에만 사용할 수 있습니다. Direct3D 11.1 런타임의 경우 모든 셰이더 단계에서 UAV(순서가 지정되지 않은 액세스 보기)를 사용할 수 있으므로 모든 셰이더 단계에서 이러한 지침을 사용할 수 있습니다.

따라서 기하 도형 셰이더에서 다음 셰이더 모델 5.0 명령을 사용하는 경우 컴파일된 기하 도형 셰이더를 pShaderBytecode에 성공적으로 전달할 수 있습니다. 즉, CreateGeometryShader 에 대한 호출이 성공합니다.

모든 셰이더 단계에서 UAV를 지원하지 않는 디바이스(모든 셰이더 단계에서 UAV를 지원하기 위해 구현되지 않은 기존 드라이버 포함)에서 다음 지침을 사용하는 pShaderBytecode 에 컴파일된 셰이더를 전달하는 경우 CreateGeometryShader 가 실패합니다. 셰이더가 하드웨어에서 지원하는 UAV 슬롯 집합 이외의 UAV 슬롯을 사용하려고 하면 CreateGeometryShader도 실패합니다.

예제

사용 예


ID3D11GeometryShader*       g_pGeometryShader11 = NULL;
ID3DBlob* pGeometryShaderBuffer = NULL;
ID3DBlob * errorbuffer = NULL;

D3DX11CompileFromFile( str, NULL, NULL, "GS", "gs_4_0", dwShaderFlags, 0, NULL,
                                         &pGeometryShaderBuffer, &errorbuffer, NULL );

pd3dDevice->CreateGeometryShader( pGeometryShaderBuffer->GetBufferPointer(),
               pGeometryShaderBuffer->GetBufferSize(), NULL, &g_pGeometryShader11 );
     
          

요구 사항

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

추가 정보

ID3D11Device