Имеет ли RenderMonkey ошибку в отображении потока TEXCOORD для GLSL?

Для ясности начну с моего вопроса:

Можно ли использовать (в коде шейдера) имя настраиваемого атрибута, которое я установил для использования TEXCOORD в (OpenGL) отображении потока в RenderMonkey 1.82, или мне нужно использовать gl_MultiTexCoord0? (Вопрос также может быть действительным для использования в НОРМАЛЬНОЙ форме, т. Е. Произвольное имя или gl_Normal)

Фон:

Использование RenderMonkey версии 1.82. Я успешно использовал отображение потока для отображения общего атрибута вершины "position" (и, возможно, "normal"), но координаты текстуры, похоже, не передаются правильно. Для кода шейдера я использую #version 330 и квалификатор "in" в GLSL, что должно быть в порядке, поскольку RM не компилирует сами шейдеры (драйвер OpenGL делает).

Я пробовал оба файла.obj и.3ds (экспортированные из blender), и при проверке.obj-файла wavefront есть вся информация о координатах текстуры, а также положения вершин и нормали.

Если это невозможно, отображение потока нарушается, и нет смысла присваивать имена переменным в редакторе отображения потока (кроме работающего потока позиции вершины), поскольку в любом случае необходимо использовать встроенные переменные.

Обновление: при использовании устаревших встроенных переменных необходимо использовать режим совместимости в шейдере, например:

#version 330 compatibility
out vec2 vTexCoord;

и в основной функции:

vTexCoord = vec2(gl_MultiTexCoord0);

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

Вот изображение рабочего решения, но со встроенными переменными (и да, закомментированная переменная texcoord на рисунке не имеет того же имени, что и в диалоговом окне отображения потока, но у меня было то же имя, когда я пытался использовать это, так что все в порядке.) Отображение потока обойдено с помощью встроенных переменных

2 ответа

Вы можете попробовать использовать общие атрибуты вершин, см. http://open.gl/, это отличный учебник;) (но я думаю, что это означает, что вам придется переписать код, чтобы вручную обрабатывать преобразования...)

#version 330

layout(location = 0) in vec3 bla_bla_bla_Vertex;
layout(location = 2) in vec3 bla_bla_bla_Normal;
layout(location = 8) in vec3 bla_bla_bla_TexCoord0;

Это рабочее решение для RM 1,82

Другие вопросы по тегам