jameshooo 2011年04月06日
为何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示例程序中却正常。请高人解惑。
...全文
67 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
游戏开发
创建于2007-08-27

7133

社区成员

2.3w+

社区内容

游戏开发相关内容讨论专区
社区公告
暂无公告