2015-04-24 3 views
0

Я рисую полный объект с несколькими сетками из одного буфера вершин/индексов, и у них разные текстуры. Таким образом, я думал о передаче идентификатора текстуры вместе с вершинами из вершинного шейдера в фрагменты в шейдере фрагментов. Проблема заключается в отключении интерполяции. Я использую GLSL ver 3.3 с SDL2 и glew на MingW.GLSL не может скомпилировать шейдер без интерполяции (flat)

Я попытался flat out uint frag_MeshID; вместо out uint frag_MeshID; в вершинном шейдере, но все же я получаю эту ошибку при компиляции фрагмента шейдер:

'frag_MeshID' : int/uint varying in is not flat interpolated

Это мой соответствующий фрагмент шейдера фрагмент: in uint frag_MeshID;

Я что-то упускаю?

ответ

0

Хорошо, так что это кажется неправильным предположением, которое я сделал. Для фрагментарного шейдера также требуется ключевое слово flat. (Я думал, что плоский атрибут вершинных шейдеров сделает UINT квартиру для следующего уровня)

Таким образом, это как пиксельный шейдер работает: flat in uint frag_MeshID; (с вершинным шейдером: flat out uint frag_MeshID;)

 Смежные вопросы

  • Нет связанных вопросов^_^