Переопределение атрибутов в GLSL - PullRequest
1 голос
/ 23 декабря 2011

Более новые версии GLSL уменьшают количество стандартных, встроенных атрибутов и униформ, например, gl_Color и gl_ModelViewMatrix отсутствуют в GLES 2.0.

Можно ли переопределить эти имена и переопределить ихв шейдере быть другого типа переменной?Будет ли объявление вашей собственной униформы gl_ModelViewMatrix при запуске в более ранней версии GLSL работать, если вы установите их самостоятельно?

В начале GLSL gl_Color может быть для каждой вершины или для всего вызова, в зависимости от того, является ли клиентназывается glColor() или glColorPointer() - можете ли вы установить атрибут один раз, чтобы он фактически стал единообразным?Или как справиться с этой неоднозначностью?

(Это все в стремлении сделать шейдеры, которые работают по целому ряду целей, с некоторыми простыми скриптами поиска-замены во время загрузки)

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Вы не можете переопределить их, и вы не можете использовать имена переменных с началом «gl_» (в статье мне это сказали)Изменение встроенных типов / переменных вообще невозможно.

1 голос
/ 23 декабря 2011

Если вы хотите легко поддерживать несколько версий GLSL, лучше всего использовать макросы.Например, вы можете определить свой входной цвет следующим образом:

#ifndef color
in vec4 color;
#endif

Затем, чтобы запустить более старую версию GLSL, вы добавляете к шейдеру #define color gl_Color

...