Directx中HLSL效果(Effect)的D3DXHANDLE

由于Directx的效果(ID3DXEffect)中已经封入了常量表,因此只要设置D3DXHANDLE就可以了。

不过偶然下看到不设置D3DXHANDLE,直接写变量名的做法居然也可以通过。

例:

标准做法:

mhWVP = mFX->GetParameterByName(0, "gWVP");

mFX->SetMatrix(mhWVP, &(mWorld*mView*mProj));

直接写HLSL侧全局变量做法:

g_pEffect->SetMatrix( "gWVP", &(mWorld*mView*mProj));

后来查了DXSDK文档,发现在工程里的预编译项如果没有D3DXFX_LARGEADDRESS_HANDLE

就可以使用传参数名/传HANDLE两种方法。

官方文档地址:

https://docs.microsoft.com/zh-cn/windows/desktop/direct3d9/d3dxfx

 

虽然初始化一堆D3DXHANDLE比较麻烦,不过官方也注明了不使用D3DXHANDLE会比较慢。

所以还是老老实实用D3DXHANDLE比较好。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部