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]
-
类型: LPCSTR
指向确定着色器指令集的着色器配置文件的指针。 有关可用配置文件的列表,请参阅 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 链接器选项来处理大于 2 GB) 的地址,则不能使用此参数,必须将其设置为 NULL。 相反,必须使用 D3DXGetShaderConstantTableEx 函数检索嵌入到着色器中的着色器常量表。 在此 D3DXGetShaderConstantTableEx 调用中,必须将 D3DXCONSTTABLE_LARGEADDRESSAWARE 标志传递给 Flags 参数,以指定以访问最多 4 GB 的虚拟地址空间。
返回值
类型: HRESULT
如果方法成功,则返回值S_OK。
如果参数无效,则 方法将返回D3DERR_INVALIDCALL。
如果 方法失败,则返回值将E_FAIL。
备注
可以为顶点着色器、像素着色器和纹理填充函数指定目标。
目标 | 函数 |
---|---|
顶点着色器目标 | 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。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅