다음을 통해 공유


ID3DXEffectCompiler::CompileShader 메서드

하나 이상의 함수가 포함된 효과에서 셰이더를 컴파일합니다.

구문

HRESULT CompileShader(
  [in]          D3DXHANDLE          hFunction,
  [in]          LPCSTR              pTarget,
  [in]          DWORD               Flags,
  [out, retval] LPD3DXBUFFER        *ppShader,
  [out, retval] LPD3DXBUFFER        *ppErrorMsgs,
  [out]         LPD3DXCONSTANTTABLE *ppConstantTable
);

매개 변수

hFunction [in]

형식: D3DXHANDLE

컴파일할 함수의 고유 식별자입니다. 이 값은 NULL이 아니어야 합니다. 핸들(Direct3D 9)을 참조하세요.

pTarget [in]

형식: LCSTTR

셰이더 명령 집합을 결정하는 셰이더 프로필에 대한 포인터입니다. 사용 가능한 프로필 목록은 D3DXGetVertexShaderProfile 또는 D3DXGetPixelShaderProfile 을 참조하세요.

Flags [in]

형식: DWORD

다양한 플래그로 식별되는 컴파일 옵션입니다. 이제 Direct3D 10 HLSL 컴파일러가 기본값입니다. 자세한 내용은 D3DXSHADER 플래그 를 참조하세요.

ppShader [out, retval]

형식: LPD3DXBUFFER*

컴파일된 셰이더를 포함하는 버퍼입니다. 컴파일러 셰이더는 DWORD 배열입니다. 버퍼에 액세스하는 방법에 대한 자세한 내용은 ID3DXBuffer를 참조하세요.

ppErrorMsgs [out, retval]

형식: LPD3DXBUFFER*

발생한 첫 번째 컴파일 오류 메시지를 포함하는 버퍼입니다. 여기에는 효과 컴파일러 오류 및 상위 수준 언어 컴파일 오류가 포함됩니다. 버퍼에 액세스하는 방법에 대한 자세한 내용은 ID3DXBuffer를 참조하세요.

ppConstantTable [out]

형식: LPD3DXCONSTANTTABLE*

셰이더 상수에 액세스하는 데 사용할 수 있는 ID3DXConstantTable 인터페이스를 반환합니다. 이 값은 NULL일 수 있습니다. 애플리케이션을 큰 주소 인식으로 컴파일하는 경우(즉, /LARGEADDRESSAWARE 링커 옵션을 사용하여 2GB보다 큰 주소를 처리함) 이 매개 변수를 사용할 수 없으며 NULL로 설정해야 합니다. 대신 D3DXGetShaderConstantTableEx 함수를 사용하여 셰이더 내에 포함된 셰이더 상수 테이블을 검색해야 합니다. 이 D3DXGetShaderConstantTableEx 호출에서는 플래그 매개 변수에 D3DXCONSTTABLE_LARGEADDRESSAWARE 플래그를 전달하여 최대 4GB의 가상 주소 공간에 액세스하도록 지정해야 합니다.

반환 값

형식: HRESULT

메서드가 성공하면 반환 값이 S_OK.

인수가 유효하지 않으면 메서드는 D3DERR_INVALIDCALL 반환합니다.

메서드가 실패하면 반환 값이 E_FAIL.

설명

꼭짓점 셰이더, 픽셀 셰이더 및 텍스처 채우기 함수에 대해 대상을 지정할 수 있습니다.

대상 Functions
꼭짓점 셰이더 대상 vs_1_1, vs_2_0, vs_2_sw, vs_3_0
픽셀 셰이더 대상 ps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0
텍스처 채우기 대상 tx_0, tx_1

 

이 메서드는 C와 유사한 언어로 작성된 함수에서 셰이더를 컴파일합니다. 자세한 내용은 HLSL을 참조하세요.

요구 사항

요구 사항
헤더
D3DX9Effect.h
라이브러리
D3dx9.lib

추가 정보

ID3DXEffectCompiler

D3DXGetShaderConstantTable