Запись в буфер глубины без проверки глубины в OpenGL (не шейдер) - PullRequest
8 голосов
/ 12 декабря 2010

Возможно ли в OpenGL нарисовать последовательность полигонов, которая не проверяет глубину (поэтому они всегда будут нарисованы перед другими полигонами, нарисованными перед ним, относительно их положения z)

но в то же время они все еще записывают в буфер глубины?

Полагаю, это возможно с помощью шейдеров, но сейчас у меня нет доступа к этому.

Ответы [ 2 ]

17 голосов
/ 12 декабря 2010

Строго говоря (со страницы руководства ):

буфер глубины не обновляется, если тест глубины отключен.

Но ... вы можете включить тест глубины, в то время как ни один фрагмент не провалит тест:

glDepthFunc(GL_ALWAYS);
glEnable(GL_DEPTH_TEST);

Конечно, вы получите последний Z, написанный при выполнениичто, не самый близкий к виду.

4 голосов
/ 12 декабря 2010

Вы можете достичь этого только за два прохода. Первый - заполнить буфер глубины только с помощью цветовой маски:

glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);

Во втором проходе вы снова включаете цветную запись, отключаете проверку глубины и переводите последовательность полигонов в порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...