Для ясности начну с моего вопроса:
Можно ли использовать (в коде шейдера) имя пользовательского атрибута , которое я установил для использования 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 на рисунке не имеет того же имени, что и в диалоговом окне отображения потока, но она имела то же имя, когда я пытался его использовать, так что все в порядке.):