#c #opengl
Вопрос:
В OpenGL я всегда вижу, что атрибут position всегда находится в атрибуте 0. Возможно ли, чтобы атрибут позиции находился под номером 1? Почему атрибут position всегда равен атрибуту 0?
Ответ №1:
За пределами теперь удаленного gl_Vertex
встроенного атрибута нет такого понятия, как «атрибут позиции». GLSL понятия не имеет, какой атрибут соответствует «позиции». Все они являются просто числами для вашего вершинного шейдера; они приобретают значение только тогда, когда вы что-то назначаете gl_Position
.
Который является выводом вершинного шейдера. То, как вы генерируете значение для этого результата, не касается GLSL.
Как уже было сказано, более старые версии OpenGL наделяли атрибут 0 особыми полномочиями. Но это были в основном рудиментарные элементы glBegin/End
программирования в стиле фиксированных функций, и им не требовалось иметь значение «позиция». Единственным особым статусом, который у него был, было то, что вы должны были что-то туда положить. То есть вы не могли не использовать атрибут 0.
Но опять же, это уже давно удалено из OpenGL. В наши дни люди ставят там «позицию» просто по привычке.