Как записать / предотвратить запись в буфер глубины OpenGL в GLSL - PullRequest
10 голосов
/ 26 апреля 2011

Я хочу записать в буфер глубины OpenGL, только если у текущего пикселя есть альфа> 0,5, как это сделать?

Если у пикселя есть альфа <0,5, я хочу отобразить цвет, но не записатьэто глубина в буфер глубины.Команда <code>discard - это не то, что я ищу, так как она отбрасывает как информацию о цвете, так и глубину;Я хочу только удалить информацию о глубине.

Существует переменная gl_FragDepth, которую можно установить, но какое значение?А для случая альфа <0,5, как оставить <code>gl_FragDepth без изменений?

Нужно ли использовать для этого FBO или оно также должно работать без?Проект, над которым я работаю, - это проект GLES 2.0 для Android

1 Ответ

18 голосов
/ 30 апреля 2011

Я решил проблему для меня с помощью

glDepthMask(false)

Эта команда отключает запись в буфер глубины, но все еще выполняет тестирование глубины. Я просто визуализировал свои прозрачные объекты после всех других объектов и получил именно тот результат, который искал.

...