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

Opengl es 将多个重叠的非不透明纹理渲染到帧缓冲区,opengl-es,rendering,framebuffer,alphablending,render-to-texture,Opengl Es,Rendering,Framebuffer,Alphablending,Render To Texture,我试图将一组纹理几何体渲染到单个FBO,然后将该FBO渲染到场景。问题是该几何体的重叠半透明区域没有正确渲染。它们最终变得过于不透明和黑暗。 如果我将几何体直接渲染到场景,它将正确渲染,但我需要首先将其渲染到FBO 顺便说一下,我使用以下方法进行混合(根据): 向FBO渲染几何体:glBlendFuncSeparate(GL\u SRC\u ALPHA,GL\u ONE\u减去grc\u ALPHA,GL\u ONE,GL\u ONE) 将FBO渲染到场景:glBlendFunc(GL\u O

我试图将一组纹理几何体渲染到单个FBO,然后将该FBO渲染到场景。问题是该几何体的重叠半透明区域没有正确渲染。它们最终变得过于不透明和黑暗。 如果我将几何体直接渲染到场景,它将正确渲染,但我需要首先将其渲染到FBO

顺便说一下,我使用以下方法进行混合(根据):

  • 向FBO渲染几何体:
    glBlendFuncSeparate(GL\u SRC\u ALPHA,GL\u ONE\u减去grc\u ALPHA,GL\u ONE,GL\u ONE)
  • 将FBO渲染到场景:
    glBlendFunc(GL\u ONE,GL\u ONE\u减去SRC\u ALPHA)

我正在为OpenGL ES 2.0做这项工作。

事实上,我发现问题在于用于将几何体渲染到FBO的混合函数

而不是:

glBlendFuncSeparate(GL_SRC_ALPHA,GL_ONE减去GL_SRC_ALPHA,GL_ONE,GL_ONE)

我必须使用:

glBlendFuncSeparate(GL_SRC_ALPHA,GL_ONE减去SRC_ALPHA,GL_ONE,GL_ONE减去SRC_ALPHA)

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