OpenGL混合了两个FBO



在我写的游戏中,我有一个级别,该级别适当地渲染到OS提供给我的屏幕上渲染缓冲区。我还可以将其渲染到框架缓冲器,然后将此帧缓和器渲染到输出渲染缓冲区。

要添加背景,我想呈现不同的场景,效果或任何其他框架,然后在包含级别的flamebuffer中没有像素集,即alpha值为0。我认为这称为α混合。

我将如何使用OpenGL进行此操作?我认为glBlendFunc可以用于实现这一目标,但是我不确定如何将其与Framebuffer绘图例程相结合以正确实现我想要的结果。

glBlendFunc允许应用程序与已存在的当前" display" framebuffer(例如,y)融合(合并)所有当前拉动操作(例如,x)的输出。<<<<<<<<。/p>

即,

新显示输出= x(混合)y

您可以通过gl以下图表显示 Blend 函数,例如:

glEnable(GL_BLEND);
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

此处显示的完整用法

https://github.com/prabindh/sgxperf/blob/master/sgxperf_test4.cpp

请注意,"通过"one_answers"混合"的概念有些不同,您可能只想坚持"每个像素alpha融合"术语。

fbos只是一个容器,而不是存储。您需要做的是为每个FBO附加一个纹理目标,并在完成此操作后将您的输出渲染到该纹理。您可以在全屏四边形上使用输出纹理,并通过混合使用您想做的任何事情。

最新更新