D3D10CreateEffectFromMemory 函数 (d3d10effect.h)

从包含已编译效果的缓冲区创建 ID3D10Effect。

语法

HRESULT D3D10CreateEffectFromMemory(
  [in]  void             *pData,
  [in]  SIZE_T           DataLength,
  [in]  UINT             FXFlags,
  [in]  ID3D10Device     *pDevice,
  [in]  ID3D10EffectPool *pEffectPool,
  [out] ID3D10Effect     **ppEffect
);

参数

[in] pData

类型: void*

指向已编译效果的指针。

[in] DataLength

类型: SIZE_T

pData 的长度。

[in] FXFlags

类型: UINT

效果 编译选项

[in] pDevice

类型: ID3D10Device*

指向设备的指针 (看到 ID3D10Device 接口) 。

[in] pEffectPool

类型: ID3D10EffectPool*

可选。 指向跨效果共享的效果变量的内存空间的指针 (请参阅 ID3D10EffectPool 接口) 。

[out] ppEffect

类型: ID3D10Effect**

指向包含所创建效果的 ID3D10Effect 接口 的指针。

返回值

类型: HRESULT

返回以下 Direct3D 10 返回代码之一。

备注

注意

d3d10_1.lib链接提供 中的d3d10_1.dll实现,即 Direct3D10.1 编程模型实现。 d3d10.lib链接提供 中的d3d10.dll实现,即 Direct3D10 编程模型实现。

此方法用于从运行时之前编译并加载到内存中的效果创建 ID3D10Effect Interface 对象。 有关预编译效果的帮助,请参阅 脱机编译。 若要加载和编译 ASCII .fx 文件,请参阅 编译效果 (Direct3D 10)

示例

编译效果

fxc.exe /T fx_4_0 /Fo Tutorial03.fxo Tutorial03.fx      

在运行时加载编译后的效果。

ifstream is("tutorial03.fxo", ios::binary);
is.seekg(0,ios_base::end);
streampos pos = is.tellg();
is.seekg(0,ios_base::beg);
char * effectBuffer = new char[pos];
is.read(effectBuffer,pos);
	
hr = D3D10CreateEffectFromMemory((void *)effectBuffer,pos,0,g_pd3dDevice,NULL,&g_pEffect);

要求

   
目标平台 Windows
标头 d3d10effect.h
Library d3d10_1.lib、d3d10.lib
DLL d3d10_1.dll、d3d10.dll

另请参阅

Direct3D 10) (效果函数