Буфер глубины OpenGL в ортогональной проекции

Если я использую ортогональную проекцию в OpenGL, но по-прежнему устанавливаю разные z-значения для своих объектов, будет ли она по-прежнему видна в буфере глубины?

Я имею в виду, что в цветовом буфере все выглядит ровно и на одном расстоянии. Но где их будут «раскрашивать» в разные оттенки? Буфер глубины «понимает» глубину в ортогональной проекции?


person tower120    schedule 02.07.2014    source источник


Ответы (1)


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

Например, у вас есть два квадроцикла A и B.

A.z = - 1.0f;

B.z = - 2.0f;

Если вы предполагаете, что оба четырехугольника имеют одинаковые размеры за пределами их значения Z, то вы можете увидеть, что рисование обоих было бы пустой тратой времени. Поскольку четырехугольник A находится перед четырехугольником B, рисовать четырехугольник B бессмысленно. Что делает буфер глубины, так это проверяет zcords. В этом примере, если бы вы включили проверку глубины и буфер глубины, четырехугольник B никогда не был бы отрисован, потому что тестирование глубины показало бы, что он перекрыт четырехугольником A.

person Freddy    schedule 02.07.2014
comment
Так что, если один не скрывает другой, в буфере глубины, один будет светлее, а другой темнее (если выглядеть как оттенки серого)? - person tower120; 02.07.2014
comment
@ Tower120 Это зависит от множества факторов. Для начала, каково альфа-значение наложенного объекта? Что еще более важно, что включено тестирование смешивания и какие функции смешивания используются? Вам нужно будет ответить на эти вопросы, прежде чем я смогу дать вам ответ на этот. - person Freddy; 02.07.2014
comment
@ Tower120 Извините, кажется, я неправильно понял ваш вопрос. Вы спрашиваете, как будет выглядеть буфер глубины? Никакого смешения не будет. Весь объект будет одного оттенка серого. Я думаю, вы спрашиваете, какой оттенок получает объект. Ну, это основано на буфере глубины, но обычно чем ближе вы находитесь, тем темнее ваш цвет, а чем дальше, тем мягче оттенок серого (в буфере глубины). - person Freddy; 02.07.2014
comment
Объекты (простые треугольники) полностью непрозрачны. Один объект имеет z = 1, другой z = 2. Будет ли 1-й треугольник иметь тот же цвет/индекс в буфере глубины, что и 2-й? - person tower120; 02.07.2014
comment
Нет - потому что глубинная составляющая у нас разная. - person Freddy; 02.07.2014