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。 在这种情况下,建议将 pEntrypoint 设置为 NULL ,因为如果调用的函数不使用它,则最好将指针参数设置为 NULL 。 对于所有其他着色器配置文件,需要有效的 pEntrypoint

[in] pTarget

类型: LPCSTR

一个字符串,指定要编译的着色器目标或着色器功能集。 着色器目标可以是着色器模型 2、着色器模型 3、着色器模型 4 或着色器模型 5。 目标也可以是 (效果类型,例如,fx_4_1) 。 有关各种配置文件支持的目标的信息,请参阅 指定编译器目标

[in] Flags1

类型: UINT

D3D 编译常量定义的标志

[in] Flags2

类型: UINT

由 D3D 编译效果常量定义的标志。 编译着色器而不是效果文件时, D3DCompile 会忽略 Flags2;建议将 Flags2 设置为零,因为如果调用的函数不使用它,则最好将非点参数设置为零。

[out] ppCode

类型: ID3DBlob**

指向变量的指针,该变量接收指向可用于访问已编译代码的 ID3DBlob 接口的指针。

[out, optional] ppErrorMsgs

类型: ID3DBlob**

指向变量的指针,该变量接收指向可用于访问编译器错误消息的 ID3DBlob 接口的指针;如果没有错误,则为 NULL

返回值

类型: HRESULT

返回 Direct3D 11 返回代码之一。

注解

D3DCompileD3DCompile2 的区别在于,后一种方法采用一些可选参数,这些参数可用于控制字节码生成方式的某些方面。 如果不需要这种额外的灵活性,则使用 D3DCompile2 不会提高性能。

要求

要求
目标平台 Windows
标头 d3dcompiler.h
Library d3dcompiler.lib
DLL d3dcompiler_47.dll

请参阅

函数