Что я хочу сделать в OpenGL с использованием C ++ и GLSL: когда текстура имеет альфа (texture.a! = 1.0;), то этот пиксель не записывается в буфер глубины. (для буфера цвета написано) Глубина записи происходит только при пиксельной текстуре. a == 1.0;
Отказ в шейдере не является решением - тогда этот пиксель не записывается в буфер цвета.
Любые идеи?
@UPDATE: Пример: у меня есть изображения пользовательского интерфейса, обработанные OpenGL. У некоторых из них в углах есть альфа. При рендеринге сцены у меня есть «предварительный проход глубины», чтобы сэкономить некоторые пиксели, не рассчитывая на них свет. Я также хочу получить изображения пользовательского интерфейса для этого предварительного прохода, но только полностью непрозрачные пиксели (альфа = 1.0).
gl_FragDepth = 0.0
для непрозрачных фрагментов,gl_FragDepth = 1.0
для всего, что имеет значение альфа! = 1.0. Любой из подходов работает, но вам придется перерисовывать графический интерфейс в каждом кадре, если вы делаете это таким образом. - person Andon M. Coleman   schedule 05.10.2013