Вопрос

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

«Невозможно смешивать шейдеров 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 конвертируют версии молча, так что вы немного недовольны. :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top