0

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

Кстати, я использую следующие для смешивания (в соответствии с opengl - blending with previous contents of framebuffer):

  • рендеринга геометрии к FBO: glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE)
  • оказывающего FBO на сцену: glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)

Я делаю это для OpenGL ES 2.0.

ответ

0

На самом деле я обнаружил, что проблема заключается в функции смешивания, используемой для визуализации геометрии в FBO.

Вместо:

glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE)

я должен использовать:

glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA)

И теперь он работает так же хорошо, как если бы я рендеринга геометрии непосредственно на сцене.