是否可以在不使用D3DX功能的情况下创建着色器?
答案 0 :(得分:2)
从D3D9开始,HLSL编译器是D3DX库的一部分。要在HLSL中编写着色器,必须使用D3DX。
然而,有IDirect3DDevice9::CreatePixelShader
和IDirect3DDevice9::CreateVertexShader
,它们从着色器字节代码创建着色器句柄,即由HLSL编译器生成的。
您可以脱机运行HLSL编译器(请参阅D3DXCompileShader
),将机器代码保存到文件中,并使用上述功能在运行时加载它。遗憾的是,这意味着您不能依赖D3DX框架所做的工作。在这种情况下,上传常量和优化更改完全取决于您。