我尝试编译一些像素着色器示例。 但是所有这些都会给出相同的错误信息。
“无法将着色器模型3.0与早期着色器模型混合使用。如果顶点着色器或像素着色器编译为3.0,则它们必须都是。”
问题似乎是像素着色器使用ps_3_0并且sprite batch具有早期版本。
technique MyTechnique
{
pass
{
PixelShader = compile ps_3_0 Mandelbrot_PixelShader();
}
}
http://blogs.msdn.com/b/shawnhar/archive/2006/12/11/sixty-fractals-per-second.aspx http://blogs.msdn.com/b/shawnhar/archive/2010/04/05/spritebatch-and-custom-shaders-in-xna-game-studio-4-0.aspx
答案 0 :(得分:2)
您必须使用3.0版重新编译顶点着色器。你可以从http://create.msdn.com/en-US/education/catalog/sample/stock_effects获取XNA的默认着色器从那里复制代码,但是将顶点着色器的版本设置为vs_3_0。
大多数GPU都是静默转换版本的,所以你有点不走运。 :)