OpenGL:glBlendFunc与glAccum的结合

OpenGL:glBlendFunc与glAccum的结合,opengl,Opengl,我一直在做一个图形项目,做景深。该方法执行多个过程,每个过程使用不同的近距离和远距离剪裁参数渲染场景,以便在每个过程中渲染不同的深度范围 其思想是通过渲染纹理并在渲染的四边形(使用纹理)上执行模糊,在每个单独的层上应用模糊内核。这些都是相当基本的东西。工作正常。但是,我无法处理的部分是层的组合: 在绘制每个过程之前,使用color4(0,0,0,0)清除颜色缓冲区。然而,累加似乎不允许使用glBlendFunc,从而在考虑到alpha信道的情况下累加(即glBlendFunc(GL_SRC_al

我一直在做一个图形项目,做景深。该方法执行多个过程,每个过程使用不同的近距离和远距离剪裁参数渲染场景,以便在每个过程中渲染不同的深度范围

其思想是通过渲染纹理并在渲染的四边形(使用纹理)上执行模糊,在每个单独的层上应用模糊内核。这些都是相当基本的东西。工作正常。但是,我无法处理的部分是层的组合:

在绘制每个过程之前,使用color4(0,0,0,0)清除颜色缓冲区。然而,累加似乎不允许使用glBlendFunc,从而在考虑到alpha信道的情况下累加(即glBlendFunc(GL_SRC_alpha,GL_SRC_ONE_减_alpha))

问题是: -glBlendFunc是否会影响glAccum? -如果没有,我如何解决这个问题

根据文档,情况似乎并非如此,因为没有提及,但它认为这是一个非常有用的功能

问候,,
R

您的问题没有解释为什么需要混合和累积,所以这个答案可能没有真正的用处。累积缓冲区不混合。但有两条路线可能有用:

  • 大多数现代硬件都可以进行“单独”混合,因此,例如,您可以在帧缓冲区上进行真实混合的同时,在alpha通道上执行加法操作

  • 许多现代设置允许您同时渲染到多个绘制缓冲区,有时使用单独的混合模式

  • 因此,您可以通过FBO使用第二个帧缓冲区作为“伪累积缓冲区”,使用混合模式“累积”。如果可以找到与所需累积操作足够接近的混合模式,则可以利用混合方程

    请看一下这些GL扩展: