为何fx效果文件中定义的shader都不起作用?
环境:WIN7,DX自带的示例中的效果文件使用都没问题。
我加载了fx效果文件,在技术和通道中正确设置了shader,像下面这样:
technique Specular
{
pass P0
{
VertexShader = compile vs_2_0 Projection(true);
PixelShader = compile ps_2_0 Lighting(false);
CullMode = CCW;
}
}
Projection和Lighting函数都有(完全从DX示例中复制的),调用D3DXCreateEffect加载效果文件全都正常,设置变量值正常,设置技术正常,调用BeginPass时应该自动设置设备状态的,但VertexShader和PixelShader全部设置的是NULL,导致着色器代码完全无效,但 CullMode 设置是成功的。不知道有哪些原因可能导致这种状况?
我用PIX跟踪了调用过程,确认效果向设备调用IDirect3DDevice9::SetPixelShader/SetVertexShader时传递的是NULL值,但相同文件在DX示例程序中却正常。请高人解惑。