D3DXCreateEffectEx 函数

根据 ASCII 或二进制效果说明创建效果。 此函数是 D3DXCreateEffect 的扩展版本,它允许应用程序控制效果系统忽略的参数。

语法

HRESULT D3DXCreateEffectEx(
  _In_        LPDIRECT3DDEVICE9 pDevice,
  _In_        LPCVOID           pSrcData,
  _In_        UINT              SrcDataLen,
  _In_  const D3DXMACRO         *pDefines,
  _In_        LPD3DXINCLUDE     pInclude,
  _In_        LPCSTR            pSkipConstants,
  _In_        DWORD             Flags,
  _In_        LPD3DXEFFECTPOOL  pPool,
  _Out_       LPD3DXEFFECT      *ppEffect,
  _Out_       LPD3DXBUFFER      *ppCompilationErrors
);

参数

pDevice [in]

类型: LPDIRECT3DDEVICE9

指向将创建效果的设备指针。 请参阅 IDirect3DDevice9

pSrcData [in]

类型: LPCVOID

指向包含效果说明的缓冲区的指针。

SrcDataLen [in]

类型: UINT

效果数据的长度(以字节为单位)。

pDefines [in]

类型: const D3DXMACRO*

描述预处理器定义的 D3DXMACRO 结构的可选 NULL 终止数组。 此值可以为 NULL

pInclude [in]

类型: LPD3DXINCLUDE

可选接口指针 ID3DXInclude,用于处理#include指令。 如果此值为 NULL,则从文件编译时将遵循#includes,或者在从资源或内存编译时导致错误。

pSkipConstants [in]

类型: LPCSTR

效果系统将忽略的效果参数字符串。 字符串必须以 NULL 结尾,并且需要包含用分号分隔的每个应用程序管理的常量的名称。

Flags [in]

类型: DWORD

如果 pSrcData 包含文本效果,则标志可以是 D3DXSHADER 标志D3DXFX 标志的组合;否则, pSrcData 包含二进制效果,唯一遵循的标志是 D3DXFX 标志。 Direct3D 10 HLSL 编译器现在是默认编译器。 有关详细信息 ,请参阅效果编译器工具

pPool [in]

类型: LPD3DXEFFECTPOOL

指向要用于共享参数的 ID3DXEffectPool 对象的指针。 如果此值为 NULL,则不会共享任何参数。

ppEffect [out]

类型: LPD3DXEFFECT*

返回指向 ID3DXEffect 接口的指针。

ppCompilationErrors [out]

类型: LPD3DXBUFFER*

返回包含编译错误列表的缓冲区。

返回值

类型: HRESULT

如果函数成功,则返回值D3D_OK。 如果函数失败,则返回值可以是以下值之一:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA E_OUTOFMEMORY。

备注

此函数是 D3DXCreateEffect 的扩展版本,它允许应用程序指定将由应用程序管理的效果常量。 由应用程序管理的常量被效果系统忽略。 也就是说,应用程序负责初始化常量,并在适当时保存和还原其状态。

此函数检查 pSkipConstants 中的每个常量,以查看:

  • 它绑定到常量寄存器。
  • 它仅用于 HLSL 着色器代码。

如果在效果中不存在的字符串中命名了常量,则忽略该常量。

要求

要求
标头
D3DX9Effect.h

D3dx9.lib

另请参阅

效果函数

D3DXCreateEffectFromFileEx

D3DXCreateEffectFromResourceEx