다음을 통해 공유


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 등)을 사용하여 컴파일하는 경우 D3DCompilepEntrypoint를 무시합니다. 이 경우 호출된 함수가 사용하지 않는 경우 포인터 매개 변수를 NULL로 설정하는 것이 좋은 프로그래밍 방식이므로 pEntrypointNULL로 설정하는 것이 좋습니다. 다른 모든 셰이더 프로필의 경우 유효한 pEntrypoint 가 필요합니다.

[in] pTarget

형식: LPCSTR

컴파일할 셰이더 대상 또는 셰이더 기능 집합을 지정하는 문자열입니다. 셰이더 대상은 셰이더 모델 2, 셰이더 모델 3, 셰이더 모델 4 또는 셰이더 모델 5일 수 있습니다. 대상은 효과 유형일 수도 있습니다(예: fx_4_1). 다양한 프로필이 지원하는 대상에 대한 자세한 내용은 컴파일러 대상 지정을 참조하세요.

[in] Flags1

형식: UINT

D3D 컴파일 상수로 정의된 플래그입니다.

[in] Flags2

형식: UINT

D3D 컴파일 효과 상수로 정의된 플래그입니다. 효과 파일이 아닌 셰이더를 컴파일하는 경우 D3DCompileFlags2를 무시합니다. 호출된 함수가 이 매개 변수를 사용하지 않는 경우 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

참조

함수