D3DCompile 함수(d3dcompiler.h)
HLSL 코드 또는 효과 파일을 지정된 대상에 대한 바이트코드로 컴파일합니다.
구문
HRESULT D3DCompile(
[in] LPCVOID pSrcData,
[in] SIZE_T SrcDataSize,
[in, optional] LPCSTR pSourceName,
[in, optional] const D3D_SHADER_MACRO *pDefines,
[in, optional] ID3DInclude *pInclude,
[in, optional] LPCSTR pEntrypoint,
[in] LPCSTR pTarget,
[in] UINT Flags1,
[in] UINT Flags2,
[out] ID3DBlob **ppCode,
[out, optional] ID3DBlob **ppErrorMsgs
);
매개 변수
[in] pSrcData
형식: LPCVOID
컴파일되지 않은 셰이더 데이터에 대한 포인터입니다. ASCII HLSL 코드 또는 컴파일된 효과
[in] SrcDataSize
형식: SIZE_T
pSrcData의 길이입니다.
[in, optional] pSourceName
형식: LPCSTR
오류 메시지를 지정하는 문자열에 이 매개 변수를 사용할 수 있습니다. 사용하지 않으면 을 NULL로 설정합니다.
[in, optional] pDefines
형식: const D3D_SHADER_MACRO*
셰이더 매크로를 정의하는 D3D_SHADER_MACRO 구조체의 선택적 배열입니다. 각 매크로 정의에는 이름과 null로 끝나는 정의가 포함됩니다. 사용하지 않으면 을 NULL로 설정합니다. 배열의 마지막 구조체는 종결자로 사용되며 모든 멤버가 NULL로 설정되어야 합니다.
[in, optional] pInclude
형식: ID3DInclude*
선택 사항입니다. 포함 파일을 처리하기 위한 ID3DInclude 에 대한 포인터입니다. 셰이더에 #include 포함된 경우 이를 NULL 로 설정하면 컴파일 오류가 발생합니다. 기본 포함 처리기에 대한 포인터인 D3D_COMPILE_STANDARD_FILE_INCLUDE 매크로를 전달할 수 있습니다. 이 기본 포함 처리기에는 현재 디렉터리를 기준으로 하는 파일과 초기 소스 파일의 디렉터리를 기준으로 하는 파일이 포함됩니다. D3D_COMPILE_STANDARD_FILE_INCLUDE 사용하는 경우 pSourceName 매개 변수에서 원본 파일 이름을 지정해야 합니다. 컴파일러는 pSourceName에서 초기 상대 디렉터리를 파생합니다.
#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)
[in, optional] pEntrypoint
형식: LPCSTR
셰이더 실행이 시작되는 셰이더 진입점 함수의 이름입니다. fx 프로필(예: fx_4_0, fx_5_0 등)을 사용하여 컴파일하는 경우 D3DCompile 은 pEntrypoint를 무시합니다. 이 경우 호출된 함수가 사용하지 않는 경우 포인터 매개 변수를 NULL로 설정하는 것이 좋은 프로그래밍 방식이므로 pEntrypoint를 NULL로 설정하는 것이 좋습니다. 다른 모든 셰이더 프로필의 경우 유효한 pEntrypoint 가 필요합니다.
[in] pTarget
형식: LPCSTR
컴파일할 셰이더 대상 또는 셰이더 기능 집합을 지정하는 문자열입니다. 셰이더 대상은 셰이더 모델 2, 셰이더 모델 3, 셰이더 모델 4 또는 셰이더 모델 5일 수 있습니다. 대상은 효과 유형일 수도 있습니다(예: fx_4_1). 다양한 프로필이 지원하는 대상에 대한 자세한 내용은 컴파일러 대상 지정을 참조하세요.
[in] Flags1
형식: UINT
D3D 컴파일 상수로 정의된 플래그입니다.
[in] Flags2
형식: UINT
D3D 컴파일 효과 상수로 정의된 플래그입니다. 효과 파일이 아닌 셰이더를 컴파일하는 경우 D3DCompile 은 Flags2를 무시합니다. 호출된 함수가 이 매개 변수를 사용하지 않는 경우 nonpointer 매개 변수를 0으로 설정하는 것이 좋은 프로그래밍 방식이므로 Flags2 를 0으로 설정하는 것이 좋습니다.
[out] ppCode
형식: ID3DBlob**
컴파일된 코드에 액세스하는 데 사용할 수 있는 ID3DBlob 인터페이스에 대한 포인터를 수신하는 변수에 대한 포인터입니다.
[out, optional] ppErrorMsgs
형식: ID3DBlob**
컴파일러 오류 메시지에 액세스하는 데 사용할 수 있는 ID3DBlob 인터페이스에 대한 포인터를 수신하는 변수에 대한 포인터이거나 오류가 없는 경우 NULL 입니다.
반환 값
형식: HRESULT
Direct3D 11 반환 코드 중 하나를 반환합니다.
설명
D3DCompile과 D3DCompile2의 차이점은 후자의 메서드는 바이트코드 생성 방법의 일부 측면을 제어하는 데 사용할 수 있는 몇 가지 선택적 매개 변수를 사용한다는 것입니다. 이러한 추가 유연성이 필요하지 않은 경우 D3DCompile2를 사용하면 성능이 향상되지 않습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3dcompiler.h |
라이브러리 | d3dcompiler.lib |
DLL | d3dcompiler_47.dll |