Что я хочу сделать в OpenGL, используя C ++ и GLSL:
Когда текстура имеет альфа (texture.a! = 1.0;), этот пиксель не записывается в буфер глубины. (для цветного буфера написано)
Глубина записи происходит только тогда, когда пиксельная текстура.a == 1,0;
Сброс в шейдер не является решением — тогда этот пиксель не записывается в цветной буфер.
Есть идеи?
@ОБНОВИТЬ:
Пример: у меня есть некоторые изображения пользовательского интерфейса, представленные OpenGL. У некоторых из них есть альфа в углах.
При рендеринге сцены у меня есть «предварительная подготовка по глубине», чтобы сохранить некоторые пиксели, не рассчитывая свет на них.
Я также хочу получить изображения пользовательского интерфейса для этого препаса — но только с полностью непрозрачными пикселями (альфа = 1,0).
Как уже упоминалось в комментариях Andon: «Вы всегда должны записывать значение глубины, когда пишете фрагмент, нет способа выборочно включить или отключить это на уровне шейдера».
Других решений пока нет …