2011-04-19 101 views

回答

2

从D3D9开始,HLSL编译器是D3DX库的一部分。要在HLSL中编写着色器,您必须使用D3DX。

但是,有IDirect3DDevice9::CreatePixelShaderIDirect3DDevice9::CreateVertexShader,它们根据着色器字节代码,即从HLSL编译器生成的内容创建着色器句柄。

可以离线运行HLSL编译器(请参阅D3DXCompileShader),将机器代码保存到文件中并使用上述功能在运行时加载它。可悲的是,这意味着你不能依靠D3DX框架完成的工作。在这种情况下,上传常量和优化更改完全取决于您。