【问题标题】:Rendering multiple overlapping non-opaque textures to a framebuffer将多个重叠的非透明纹理渲染到帧缓冲区
【发布时间】:2013-06-05 10:43:48
【问题描述】:

我正在尝试将一组纹理几何体渲染到单个 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 执行此操作。

【问题讨论】:

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


    【解决方案1】:

    实际上,我发现问题在于用于将几何体渲染到 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)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-27
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      相关资源
      最近更新 更多