HLSL的问题
有个BasicHLSL的例子(网上到处都是),编译没有任何问题,但是执行exe时总是出错。
最后偶然将
D3DXCompileShaderFromFile("BasicHLSL.txt",0,0,"SetColor","vs_3_0",D3DXSHADER_DEBUG,&shaderBuffer,&errorBuffer,&BasicConstTable)
参数改为D3DXSHADER_USE_LEGACY_D3DX9_31_DLL,就没有问题了,请问这是为什么?
另,创建D3D设备时用D3DCREATE_SOFTWARE_VERTEXPROCESSING,shader才能正常工作,一旦设置成D3DCREATE_HARDWARE_VERTEXPROCESSING,shader貌似就不能工作了,屏幕上空空如也,这又是为什么(我的电脑肯定是支持硬件顶点处理的)?
[解决办法]
2009年有几个版本的D3D SDK,里面带的HLSL编译器是基于DX10/11的,在编译DX9的HLSL的时候会有一些兼容性问题,加上D3DXSHADER_USE_LEGACY_D3DX9_31_DLL标志以后,系统会使用d3dx9_31.dll中的编译器去编译DX9 HLSL,就没有兼容性问题了。
第二个问题,可能你的显卡不是硬件支持DX9.0C,你可以试着把VS_3_0改成VS_2_0试试。