Ответ 1
Для атрибутов вершин это не имеет значения. 4-й компонент автоматически расширяется до 1.0
, когда он отсутствует.
То есть, если вы передадите трехмерный указатель атрибута вершины на 4-мерный вектор, GL заполнит W
1.0
для вас. Я всегда использую этот маршрут, избегая необходимости явно писать vec4 (...)
при выполнении умножения матрицы на позицию, а также избегать потери памяти, хранящей 4-й компонент.
Это тоже работает для 2D-координат. Двумерная координата, передаваемая атрибуту vec4
, становится vec4 (x, y, 0.0, 1.0)
. Общее правило таково: все отсутствующие компоненты заменяются на 0.0
, за исключением W
, который заменяется на 1.0
.
Однако для людей, которые не знают о поведении GLSL в этом случае, это может сбить с толку. Полагаю, поэтому большинство учебников никогда не затрагивают эту тему.