2015-04-16 5 views
2

В режиме смешивания мы нарисовываем непрозрачные объекты с помощью z-write и теста. Затем мы отключим z-запись с возможностью тестирования для рисования полупрозрачных объектов. При рисовании полупрозрачных объектов мы возвращаем их в передний порядок, поэтому почему нам нужно отключить запись в z-буфер?Почему мы отключили Z-запись при смешивании

ответ

2

Потому что, если вы этого не сделаете, они могут препятствовать другим полупрозрачным объектам, которые будут нарисованы позже на сцену или даже части одного и того же объекта. Тот факт, что вы рисуете их назад, не означает, что препятствие не может иметь место.

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

+0

Можете ли вы привести пример, поддерживающий вашу точку? – debonair

+0

@Pavel Beliy: Я добавил ваш комментарий в свой ответ. –

0

Если вы строго отредактируете назад, нет необходимости отключать запись глубины. Я могу подумать о нескольких причинах, по которым вы можете его отключить:

  1. Сортировка на самом деле не идеальна. В то время как вы получаете неправильный результат рендеринга в любом случае, он интуитивно имеет смысл, что смешивание в неправильном порядке приведет к менее заметным артефактам, чем полностью исключить геометрию. Таким образом, отключение записи глубины, скорее всего, уменьшит ошибку из-за несовершенной сортировки. Сортировка совершенно нетривиальна в общем случае и может даже потребовать расщепления многоугольников. См. Мой ответ здесь для получения более подробной информации о трудностях: Some questions about OpenGL transparency.

  2. Избегание записи глубины может повысить эффективность. Я сомневаюсь, что это будет очень важно. Но, как правило, всегда полезно избегать ненужной работы. А так как писать глубину определенно не необходимо в этом случае, вы можете также пропустить его.