Различные версии PixelShader и VertexShader для SpriteBatch - PullRequest
2 голосов
/ 25 октября 2010

Я попытался скомпилировать несколько примеров пиксельных шейдеров. Но все они выдают одно и то же сообщение об ошибке.

"Невозможно смешать шейдерную модель 3.0 с более ранними моделями шейдеров. Если либо вершинный шейдер, либо пиксельный шейдер скомпилированы как 3.0, они оба должны быть."

Кажется, проблема в том, что пиксельный шейдер использует ps_3_0, а пакет спрайтов имеет более раннюю версию.

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

1 Ответ

2 голосов
/ 25 октября 2010

Вы должны перекомпилировать вершинный шейдер с версией 3.0. Вы можете получить шейдеры XNA по умолчанию из http://create.msdn.com/en-US/education/catalog/sample/stock_effects Скопировать код оттуда, но установить версию вершинного шейдера vs_3_0.

Большинство графических процессоров конвертируют версии молча, так что вам немного не повезло. :)

...