2010-10-25 43 views
2

我试图编译一些像素着色器的例子。 但他们都给出了相同的错误信息。 “SpriteBatch的PixelShader和VertexShader的不同版本

”不能将着色器模型3.0与较早的着色器模型混合使用,如果顶点着色器或像素着色器编译为3.0,则它们都必须是“。

问题似乎是像素着色引擎使用了ps_3_0,并且sprite批处理版本的版本较早。

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

回答

2

必须重新编译顶点着色器与3.0版本。您可以从http://create.msdn.com/en-US/education/catalog/sample/stock_effects中获取XNA的默认着色器,但将顶点着色器的版本设置为vs_3_0。

大多数GPU都会默认转换版本,所以你有点不吉利。 :)

+0

谢谢,我会试一试。你是对的GPU。我知道这个问题是特定于ATI的。 – 2010-10-27 08:26:28