D3DXCreateEffectFromFileEx 函数
根据 ASCII 或二进制效果说明创建效果。 此函数是 D3DXCreateEffectFromFile 的扩展版本,它允许应用程序控制效果系统忽略的参数。
语法
HRESULT D3DXCreateEffectFromFileEx(
_In_ LPDIRECT3DDEVICE9 pDevice,
_In_ LPCTSTR pSrcFile,
_In_ const D3DXMACRO *pDefines,
_In_ LPD3DXINCLUDE pInclude,
_In_ LPCSTR pSkipConstants,
_In_ DWORD Flags,
_In_ LPD3DXEFFECTPOOL pPool,
_Out_ LPD3DXEFFECT *ppEffect,
_Out_ LPD3DXBUFFER *ppCompilationErrors
);
parameters
-
pDevice [in]
-
指向将创建效果的设备的指针。 请参阅 IDirect3DDevice9。
-
pSrcFile [in]
-
类型: LPCTSTR
指向文件名的指针。 此参数支持 Unicode 和 ANSI 字符串。 请参阅“备注”。
-
pDefines [in]
-
类型: const D3DXMACRO*
可选的以 NULL 结尾的预处理器宏定义数组。 请参阅 D3DXMACRO。
-
pInclude [in]
-
类型: LPD3DXINCLUDE
可选接口指针 ID3DXInclude,用于处理#include指令。 如果此值为 NULL,则从文件编译时将遵循#includes,或者在从资源或内存编译时会导致错误。
-
pSkipConstants [in]
-
类型: LPCSTR
效果系统将忽略的效果参数字符串。 字符串必须以 NULL 结尾,并且需要包含由分号分隔的每个应用程序管理的常量的名称。
-
Flags [in]
-
类型: DWORD
如果 pSrcFile 包含文本效果,标志可以是 D3DXSHADER 标志 和 D3DXFX 标志的组合;否则, pSrcFile 包含二进制效果,并且唯一遵循的标志是 D3DXFX 标志。 Direct3D 10 HLSL 编译器现在是默认编译器。 有关详细信息 ,请参阅效果编译器工具 。
-
pPool [in]
-
类型: LPD3DXEFFECTPOOL
指向要用于共享参数的 ID3DXEffectPool 对象的指针。 如果此值为 NULL,则不会共享任何参数。
-
ppEffect [out]
-
类型: LPD3DXEFFECT*
返回指向包含编译效果的缓冲区的指针。 请参阅 ID3DXEffect。
-
ppCompilationErrors [out]
-
类型: LPD3DXBUFFER*
返回指向包含编译错误列表的缓冲区的指针。 请参阅 ID3DXBuffer。
返回值
类型: HRESULT
如果函数成功,则返回值D3D_OK。 如果函数失败,则返回值可以是下列值之一:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA、E_OUTOFMEMORY。
备注
此函数是 D3DXCreateEffectFromFile 的扩展版本,它允许应用程序指定将由应用程序管理的效果常量。 由应用程序管理的常量会被效果系统忽略。 也就是说,应用程序负责初始化常量,并在适当的时候保存和还原其状态。
此函数检查 pSkipConstants 中的每个常量以查看:
- 它绑定到常量寄存器。
- 它仅在 HLSL 着色器代码中使用。
如果在效果中不存在的字符串中命名了常量,则忽略该常量。
如果编译器设置需要 Unicode,则数据类型 LPCTSTR 解析为 LPCWSTR。 否则,LPCTSTR 数据类型解析为 LPCSTR。
编译器设置还确定函数版本。 如果定义了 Unicode,则函数调用将解析为 D3DXCreateEffectFromFileW。 否则,函数调用将解析为 D3DXCreateEffectFromFileA,因为正在使用 ANSI 字符串。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
请参阅