C# SpriteBatch的不同版本的PixelShader和VertexShader

C# SpriteBatch的不同版本的PixelShader和VertexShader,c#,xna,xna-4.0,hlsl,xna-3.0,C#,Xna,Xna 4.0,Hlsl,Xna 3.0,我尝试编译一些像素着色器示例。 但它们都给出了相同的错误信息 无法将着色器模型3.0与早期的着色器模型混合使用。如果顶点着色器或像素着色器编译为3.0,则两者必须同时使用 问题似乎在于像素着色器使用ps_3_0,而sprite batch使用的是早期版本 technique MyTechnique { pass { PixelShader = compile ps_3_0 Mandelbrot_PixelShader(); } } 必须使用3.0版重新

我尝试编译一些像素着色器示例。 但它们都给出了相同的错误信息

无法将着色器模型3.0与早期的着色器模型混合使用。如果顶点着色器或像素着色器编译为3.0,则两者必须同时使用

问题似乎在于像素着色器使用ps_3_0,而sprite batch使用的是早期版本

technique MyTechnique
{
    pass
    {
        PixelShader = compile ps_3_0 Mandelbrot_PixelShader();
    }
}

必须使用3.0版重新编译顶点着色器。您可以从复制代码中获得XNA的默认着色器,但可以将顶点着色器的版本设置为vs_3_0


大多数GPU都以静默方式转换版本,因此您有点不走运。:)

谢谢,我试试看。关于GPU,你是对的。我知道这个问题是ATI特有的。