Почему нормализованная система координат устройства левша? - PullRequest
6 голосов
/ 22 февраля 2012

Сначала я задавался вопросом, почему NDC колеблется от -1 до 1, а не от 0 до 1. Я подумал, что, возможно, наличие источника в центре полезно для чего-то.

Но почему она использует левостороннюю систему координат?

Может ли быть так, что значение Z выше для объектов, находящихся дальше? Это было бы достаточно веской причиной для меня.

Ответы [ 3 ]

12 голосов
/ 22 февраля 2012

Но почему он использует левую систему координат?

Давайте добавим «по умолчанию» к этому вопросу.Потому что все, что нужно, чтобы изменить это glDepthRange(1.0f, 0.0f);, и теперь вы правша.И да, это совершенно законный синтаксис GL;никогда не было ограничения, что диапазон около z меньше, чем диапазон далеко z.

Почему он по умолчанию левша?Может, кому-то из ARB это понравилось.Возможно, кому-то из ARB понравилось увеличивать диапазон глубины, а не уменьшать, и ориентация в левом нижнем углу сделала это необходимым.Возможно, потому, что прародитель OpenGL, IRIX GL, сделал это таким образом, и ARB не видел необходимости менять его.

Причина этого несущественна;вручение - это чисто нотное удобство.В некоторых местах правша имеет смысл.В других, левша имеет смысл.А так как это тривиально изменилось, просто используйте то, что работает для вас.

Это будет соответствовать всему остальному.

В соответствии с чем все остальное?Все что было удалено из фиксированной функции?

Преобразование области просмотра выполняется внутри OpenGL, и никто не может его найти.Вы даже не предоставляете матрицу;Вы просто предоставляете область просмотра и диапазон глубины.Таким образом, с точки зрения того, кто использует GL с фиксированной функцией, все на самом деле правша.

Единственный раз, когда возникает даже вопрос о вручении, это когда вы имеете дело с вершинными шейдерами напрямую, где вы должны знать, что такое рука об руку.клип-пространство есть.И в этом случае, изменение руки является простой функцией перспективной проекции, отрицающей Z. Или, если вам нравятся левосторонние координаты, перспективная проекция не отрицает Z. Или снова, просто поверните вспятьglDepthRange и теперь вы правша.

8 голосов
/ 22 февраля 2012

Но почему используется левосторонняя система координат?

Так что увеличение расстояний от плоскости проекции в карте направления обзора до увеличения значений буфера глубины.

Может ли быть так, что Z-значение выше для объектов, находящихся дальше?Это было бы достаточно веской причиной для меня.

Ну, именно поэтому это так.

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

Предполагаю, что изменение руки зависит от того, как видеокарты интерпретируют значения z. Большее значение z -> большая глубина. Предполагаемое изменение руки может быть выполнено с помощью матрицы проекции без дополнительных затрат. Изменение его позже добавит дополнительный шаг вычисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...