将多个重叠的非不透明纹理渲染到帧缓冲区

时间:2013-06-05 10:43:49

标签: opengl-es rendering framebuffer alphablending render-to-texture

我正在尝试将一组纹理几何体渲染到单个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做这件事。

1 个答案:

答案 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)

现在它的工作效果就像我将几何体直接渲染到场景一样。

相关问题