Я читаю потрясающий учебник OpenGL .Это действительно здорово, поверь мне.Тема, которой я сейчас занимаюсь, - это Z-буфер.Помимо объяснения, что это такое, автор упоминает, что мы можем выполнять пользовательские тесты глубины, такие как GL_LESS, GL_ALWAYS и т. Д. Он также объясняет, что фактическое значение значений глубины (которое является верхним, а что нет) также может бытьнастроены.Я так понимаю, до сих пор.И тогда автор говорит что-то невероятное:
Диапазон zNear может быть больше диапазона zFar;если это так, то значения пространства окна будут обращены в обратном направлении с точки зрения того, что составляет самое близкое или самое дальнее от зрителя.
Ранее было сказано, что значение Z в пространстве окна 0 является самым близким и 1самый дальнийОднако, если бы наши значения Z пространства клипа были сведены на нет, глубина 1 была бы самой близкой к представлению, и глубина 0 была бы самой дальней.Тем не менее, если мы изменим направление проверки глубины (от GL_LESS до GL_GREATER и т. Д.), Мы получим точно такой же результат.Так что это действительно просто соглашение. Действительно, изменение знака Z и проверка глубины были когда-то жизненно важной оптимизацией производительности для многих игр.
Если я правильно понимаю, с точки зрения производительностипереключение знака Z и проверка глубины - не что иное, как изменение сравнения <
на сравнение >
.Итак, если я правильно понимаю, и автор не лжет и не выдумывает, то изменение <
на >
раньше было жизненно важной оптимизацией для многих игр.
Автор придумывает, я что-то неправильно понимаю, или это действительно так, что когда-то <
был медленнее ( жизненно , как говорит автор), чем >
?
Спасибо за разъяснение этого довольно любопытного вопроса!
Отказ от ответственности: я полностью осознаю, что сложность алгоритма является основным источником для оптимизации.Кроме того, я подозреваю, что в настоящее время это определенно не будет иметь никакого значения, и я не прошу это оптимизировать что-либо.Мне просто чрезвычайно, больно, может быть, чрезмерно любопытно.