Для ясности я начинаю с вопроса:
Можно ли использовать (в шейдерном коде) имя настраиваемого атрибута, которое я установил для использования TEXCOORD в сопоставлении потоков OpenGL в RenderMonkey 1.82 или мне нужно использовать gl_MultiTexCoord0? (Вопрос может быть действительным для НОРМАЛЬНОГО использования, например, пользовательского имени или gl_Normal)
Фон:
Использование RenderMonkey версии 1.82. Я успешно использовал отображение потока для сопоставления общего атрибута вершины "позиция" (и, возможно, "нормального" ), но координаты текстуры, похоже, не перенаправлены правильно. Для шейдерного кода я использую #version 330 и "in" в GLSL, что должно быть ОК, поскольку RM не компилирует сами шейдеры (драйвер OpenGL).
Я пробовал файлы .obj и .3ds (экспортируется из блендера), а при проверке файла .obj файла wavefront присутствует вся информация о координатах текстуры, а также положения вершин и нормали.
Если это невозможно, отображение потока нарушается, и нет смысла указывать переменные в редакторе сопоставления потоков (кроме того, для потока позиции вершин, который работает), так как нужно использовать встроенные переменные в любом случае.
Обновление: Если вы используете устаревшие встроенные переменные, нужно использовать режим совместимости в шейдере, например,
#version 330 compatibility
out vec2 vTexCoord;
и в основной функции:
vTexCoord = vec2(gl_MultiTexCoord0);
(Теперь я не уверен в отношении отображения потоков нормалей. Как только я получил координаты текстуры, у меня были нормальные проблемы и мне пришлось вернуться к gl_Normal.)
Вот изображение рабочего решения, но со встроенными переменными (и да, прокомментированная переменная texcoord на картинке не имеет того же имени, что и в диалоговом окне сопоставления потоков, но имеет одно и то же имя, когда я попытался использовать его, так что все в порядке.):