我一直在做一个图形项目做深度场。该方法进行了几次传递,每一次呈现的场景都有不同的近景和远场裁剪参数,使得每一次渲染的深度范围不同。
其思想是在每个单独的层上应用模糊内核,方法是对纹理进行渲染,并在呈现的四层上(使用纹理)进行模糊处理。这些都是相当基本的东西。一切都很顺利。然而,我无法工作的部分是各层的结合:
在每次绘制之前,用color4(0、0、0、0)清除颜色缓冲区。但是,积累似乎不允许glBlendFunc的使用,因此它会累积考虑到alpha通道(即glBlendFunc(GL_SRC_ALPHA,GL_SRC_ONE_MINUS_ALPHA))。
那么问题是:- glBlendFunc会影响glAccum吗?-如果没有,我该如何解决这个问题?
根据文档,情况似乎并非如此,因为没有提到它,但是它认为这是一个非常有用的特性。
问候,R
发布于 2010-01-29 16:36:31
你的问题并没有解释为什么你需要混合和阿库姆,所以这个答案可能不是真正有用的。该缓冲液不混合。但是有两条路可能是有用的:
大多数现代硬件都可以进行“单独”混合,因此,例如,您可以在alpha通道上执行加性操作,同时在framebuffer.
因此,您可能可以通过FBO使用第二个框架缓冲区作为某种“假accum缓冲区”,使用混合模式来“累积”。如果您能够找到一个与您想要的累积操作足够接近的混合模式,您可能可以利用混合方程。
看看这些GL扩展:
http://www.opengl.org/registry/specs/ARB/draw_buffers.txt
http://www.opengl.org/registry/specs/ARB/draw_buffers_blend.txt
http://www.opengl.org/registry/specs/EXT/draw_buffers2.txt
https://stackoverflow.com/questions/973472
复制相似问题