Различная версия Pixelshader и VertexShader для SpriteBatch
Вопрос
Я пытался собрать несколько примеров пикселейных шейдеров. Но все они дают одно и то же сообщение об ошибке.
«Невозможно смешивать шейдеров Model 3.0 с более ранними моделями шейдеров. Если либо вершин шейда или пиксельный шейдер скомпилирован как 3.0, они оба должны быть».
Проблема, кажется, в том, что Pixel Shader использует 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.
Решение
Вы должны перекомпилировать вершинный шейдер с версией 3.0. Вы можете получить шейдеры по умолчанию XNA из http://create.msdn.com/en-us/education/catalog/sample/stock_effects. Копировать код оттуда, но установите версию версии вершины шейдера на VS_3_0.
Большинство GPUS конвертируют версии молча, так что вы немного недовольны. :)