我一直致力于一个做深度场的图形项目。该方法正在进行多次传递,每次传递都会使用不同的近距离和远距离剪切参数渲染场景,以便在每次传递时渲染不同的深度范围。
这个想法是通过渲染纹理并在渲染的四边形(使用纹理)上进行模糊,在每个单独的图层上应用模糊内核。这都是相当基本的东西。因为工作正常。然而,我无法工作的部分是层的组合:
在绘制每个通道之前,使用color4(0,0,0,0)清除颜色缓冲区。然而,积累似乎不允许使用glBlendFunc使得它累积考虑alpha通道(即glBlendFunc(GL_SRC_ALPHA,GL_SRC_ONE_MINUS_ALPHA))。
问题是: - glBlendFunc会影响glAccum吗? - 如果没有,我该如何解决这个问题?
根据文档,这似乎并非如此,因为没有提及,但感觉这是一个非常有用的功能。
此致 [R
答案 0 :(得分:0)
你的问题没有解释为什么你需要混合和累积,所以这个答案可能不是真正有用。 accum缓冲区不会混合。但是有两条路线可能有用:
大多数现代硬件可以进行“分离”混合,因此您可以在Alpha通道上进行添加操作,同时在帧缓冲区上进行实际混合。
许多现代设置可让您同时渲染到多个绘制缓冲区,有时使用单独的混合模式。
因此,您可以通过FBO使用第二个帧缓冲作为“伪累积缓冲区”,使用混合模式“累积”。如果你能找到一个足够接近你想要的累积操作的混合模式,你可以利用混合方程式。
看看这些GL扩展:
http://www.opengl.org/registry/specs/ARB/draw_buffers.txt
http://www.opengl.org/registry/specs/ARB/draw_buffers_blend.txt