D3DCompileFromFile 函数 (d3dcompiler.h)
语法
HRESULT D3DCompileFromFile(
[in] LPCWSTR pFileName,
[in, optional] const D3D_SHADER_MACRO *pDefines,
[in, optional] ID3DInclude *pInclude,
[in] LPCSTR pEntrypoint,
[in] LPCSTR pTarget,
[in] UINT Flags1,
[in] UINT Flags2,
[out] ID3DBlob **ppCode,
[out, optional] ID3DBlob **ppErrorMsgs
);
参数
[in] pFileName
指向常量以 null 结尾的字符串的指针,该字符串包含包含着色器代码的文件的名称。
[in, optional] pDefines
定义着色器宏 的可选D3D_SHADER_MACRO 结构数组。 每个宏定义都包含一个名称和一个以 null 结尾的定义。 如果未使用,则设置为 NULL。 数组中的最后一个结构用作终止符,并且必须将所有成员设置为 NULL。
[in, optional] pInclude
指向 ID3DInclude 接口的可选指针,编译器使用该指针来处理包含文件。 如果将此参数设置为 NULL ,并且着色器包含 #include,则会发生编译错误。 可以传递 D3D_COMPILE_STANDARD_FILE_INCLUDE 宏,该宏是指向默认包含处理程序的指针。 此默认包含处理程序包括相对于当前目录的文件。
#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)
[in] pEntrypoint
指向常量以 null 结尾的字符串的指针,该字符串包含着色器执行开始处的着色器入口点函数的名称。 编译效果时, D3DCompileFromFile 会忽略 pEntrypoint;建议将 pEntrypoint 设置为 NULL ,因为如果调用的函数不使用它,则最好将指针参数设置为 NULL 。
[in] pTarget
指向以 null 结尾的常量字符串的指针,该字符串指定要编译的着色器目标或着色器功能集。 着色器目标可以是着色器模型 (例如着色器模型 2、着色器模型 3、着色器模型 4 或着色器模型 5 及更高版本) 。 目标也可以是 (效果类型,例如,fx_4_1) 。 有关各种配置文件支持的目标的信息,请参阅 指定编译器目标。
[in] Flags1
通过使用按位 OR 操作组合的着色器编译选项的组合。 生成的值指定编译器如何编译 HLSL 代码。
[in] Flags2
通过使用按位 OR 操作组合的效果编译选项的组合。 生成的值指定编译器如何编译效果。 编译着色器而不是效果文件时, D3DCompileFromFile 会忽略 Flags2;建议将 Flags2 设置为零,因为如果调用的函数不使用它,则最好将非点参数设置为零。
[out] ppCode
指向变量的指针,该变量接收指向可用于访问已编译代码的 ID3DBlob 接口的指针。
[out, optional] ppErrorMsgs
指向变量的可选指针,该变量接收指向可用于访问编译器错误消息的 ID3DBlob 接口的指针;如果没有错误,则为 NULL 。
返回值
返回 Direct3D 11 返回代码之一。
注解
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3dcompiler.h |
Library | D3DCompiler.lib |
DLL | D3DCompiler_47.dll |