Почему данные атрибутов четвертого поля 1 - PullRequest
0 голосов
/ 01 апреля 2012

Простой вопрос, надеюсь, простой ответ.

Данные атрибутов, отправляемые в Vertex Shaders, представлены в виде 4-мерного вектора. Что касается представления позиционных данных, поля обычно называются X, Y, Z и W. Мой вопрос касается W.

По умолчанию, если информация не указана, атрибут содержит:

[ 0, 0, 0, 1 ]

Почему существует различие в четвертом поле с его значением по умолчанию 1, а не 0, как у остальных? Это стилистическая, математическая или какая-то другая аргументация?

Нет настоящей причины этого вопроса, кроме любопытства. Спасибо за ваше время.

1 Ответ

2 голосов
/ 01 апреля 2012

Поскольку это наиболее полезное значение, которое оно может иметь.

Если вы отправляете 3-элементный цвет (RGB), четвертый компонент, автоматически заполненный 1, действительно полезен. Аналогично, если вы отправляете 3-векторную позицию, четвертый компонент, равный 1, полезен для умножения на матрицы 4x4.

Единственный раз, когда это обязательство - это нормали (или схожие направления, такие как касательные и битовые касания), когда вы пытаетесь использовать их с матрицами 4x4.

...