#opengl #depth-buffer
#opengl #буфер глубины
Вопрос:
Если я использую ортогональную проекцию в OpenGL, но все равно устанавливаю разные z-значения для своих объектов, будет ли он по-прежнему виден в буфере глубины?
Я имею в виду, что в цветном буфере все выглядит просто и на одном расстоянии. Но везде, где они будут «раскрашены» в разные оттенки? «Понимает» ли буфер глубины глубину в ортогональной проекции?
Ответ №1:
Буфер глубины не имеет ничего общего с матрицей проекции. Проще говоря, z-буфер принимает к сведению ближайшее Z-значение в данной точке. По мере рисования он просматривает текущее значение. Если новое значение меньше существующего, оно принимается и буфер z обновляется. Если значение больше значения, стоящего за текущим значением, оно отбрасывается. Буфер глубины не имеет ничего общего с цветом. Я думаю, вы можете путать смешивание с тестированием глубины.
Например, скажем, у вас есть два квадрата A amp; B.
A.z = — 1.0f;
B.z = — 2.0f;
Если вы предполагаете, что оба квадрата имеют одинаковые размеры, за пределами их значения Z, то вы можете видеть, как рисование обоих было бы пустой тратой. Поскольку квадрат A находится перед квадратом B, бесполезно рисовать квадрат B. Что делает буфер глубины, так это проверяет zcords. В этом примере, если бы вы включили тестирование глубины и буфер глубины, квадрат B никогда бы не был нарисован, потому что тестирование глубины показало бы, что он закрыт квадратом A.
Комментарии:
1. Итак, если один не скрывает другой, в буфере глубины один будет светлее, а другой темнее (если смотреть на него в оттенках серого)?
2. @tower120 Это зависит от множества факторов. Для начала, каково альфа-значение накладываемого объекта? Что еще более важно, что включено тестирование наложения и какие функции наложения используются? Вам нужно будет ответить на эти вопросы, прежде чем я смогу дать вам ответ на это.
3. @tower120 Извините, я думаю, что я неправильно понял ваш вопрос. Вы спрашиваете, как будет выглядеть буфер глубины? Смешивания не было бы вообще. Весь объект был бы того же «оттенка серого». Я думаю, вы спрашиваете о том, какой оттенок получает объект. Ну, это зависит от буфера глубины, но обычно, чем ближе вы находитесь, тем темнее ваш цвет, а чем дальше, тем более мягкий оттенок серого (в буфере глубины).
4. Объекты (простые треугольники) полностью непрозрачны. Один объект имеет z = 1, другой z = 2. Будет ли 1-й треугольник того же цвета / индекса в буфере глубины, что и 2-й?
5. Нет — потому что компонент глубины у нас разный.