Есть ли в RenderMonkey ошибка в отображении потока TEXCOORD для GLSL? - PullRequest
10 голосов
/ 15 июля 2011

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

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

Ответы [ 2 ]

0 голосов
/ 03 мая 2017
#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

0 голосов
/ 11 августа 2013

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

...