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 |