在我写的游戏中,我有一个级别,该级别适当地渲染到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附加一个纹理目标,并在完成此操作后将您的输出渲染到该纹理。您可以在全屏四边形上使用输出纹理,并通过混合使用您想做的任何事情。