为何fx效果文件中定义的shader都不起作用?

jameshooo 2011-04-06 11:29:06
环境: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示例程序中却正常。请高人解惑。
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 baesky 的回复:]
怎么搞定的?
[/Quote]

加载fx文件时设置错了标志位,不应该使用 D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT 和 D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT 标志。偶以为设置这个只是为了更方便 shader 调试,没想到影响了运行效果。
渔舟唱晚, 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jameshooo 的回复:]

搞定了。来人接分吧。
[/Quote]
Baesky 2011-04-06
  • 打赏
  • 举报
回复
怎么搞定的?
fangchenxuan 2011-04-06
  • 打赏
  • 举报
回复
接分,呵呵呵~
jameshooo 2011-04-06
  • 打赏
  • 举报
回复
搞定了。来人接分吧。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧