Но почему он использует левую систему координат?
Давайте добавим «по умолчанию» к этому вопросу.Потому что все, что нужно, чтобы изменить это glDepthRange(1.0f, 0.0f);
, и теперь вы правша.И да, это совершенно законный синтаксис GL;никогда не было ограничения, что диапазон около z меньше, чем диапазон далеко z.
Почему он по умолчанию левша?Может, кому-то из ARB это понравилось.Возможно, кому-то из ARB понравилось увеличивать диапазон глубины, а не уменьшать, и ориентация в левом нижнем углу сделала это необходимым.Возможно, потому, что прародитель OpenGL, IRIX GL, сделал это таким образом, и ARB не видел необходимости менять его.
Причина этого несущественна;вручение - это чисто нотное удобство.В некоторых местах правша имеет смысл.В других, левша имеет смысл.А так как это тривиально изменилось, просто используйте то, что работает для вас.
Это будет соответствовать всему остальному.
В соответствии с чем все остальное?Все что было удалено из фиксированной функции?
Преобразование области просмотра выполняется внутри OpenGL, и никто не может его найти.Вы даже не предоставляете матрицу;Вы просто предоставляете область просмотра и диапазон глубины.Таким образом, с точки зрения того, кто использует GL с фиксированной функцией, все на самом деле правша.
Единственный раз, когда возникает даже вопрос о вручении, это когда вы имеете дело с вершинными шейдерами напрямую, где вы должны знать, что такое рука об руку.клип-пространство есть.И в этом случае, изменение руки является простой функцией перспективной проекции, отрицающей Z. Или, если вам нравятся левосторонние координаты, перспективная проекция не отрицает Z. Или снова, просто поверните вспятьglDepthRange
и теперь вы правша.