Answers:
附加混合,即glBlendFunc(GL_ONE,GL_ONE)和glEnable(GL_BLEND)。
对于我的延迟渲染器,我使用来自g缓冲区的信息将所有灯光聚合到一个灯光渲染目标中,然后在创建最终的后缓冲图像时对该渲染目标进行采样以获取光强度。
所以基本上,我将所有游戏几何图形运行到我的几何图形通道中,以构建g缓冲区。从那里,我将g缓冲区输入到我的light pass着色器。每个灯都使用全屏四边形通过该通道。这样,我的像素着色器可以计算来自g缓冲区的所有可见表面的光强度,然后将它们添加到光渲染目标中。您只需将每个光的光强度添加到光缓冲区中,但要确保将强度从0钳位到1。
处理不同类型的光源(点光源,聚光灯,平行光源)所需要做的只是通过使用恒定缓冲区来指定要执行的照明过程来使光通过更坚固。
可能会有比这更好的答案,但是我知道,如果在您的着色器中重复执行第二个光源所需的代码,则可以在单个对象上处理两个光源,而不是一个。它确实需要为第二盏灯增加很多代码,并增加一些多余的接缝,但是我知道它确实可以工作。但是,我确实相信,正如有人希望为您指出的那样,可能会有更优雅的解决方案。