如何使用QOpenGLFramebufferObject对两个透明的帧缓冲区对象进行blit



我有两个使用QOpenGLFrameBufferObject创建的FBO,它们是具有透明背景的图像,上面有一些行和文本。我使用QOpenGLFramebufferObject::blitFramebuffer将第一个fbo闪电传输到第二个fbo上,这会导致第一个fbo的内容位于第二个的顶部。然而,我想保留第一个fbo的透明度,并将第一个fbo的内容混合在第二个fbo上(而不是擦除第二个fbo的部分并在其上重新绘制第一个fbo(。环顾四周,我认为glBlendFunc可能会实现这一点,但以下并没有真正达到我想要的结果。

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// then blit fbo1 on top of fbo2
QOpenGLFramebufferObject::blitFramebuffer(fbo2, fbo1);

当我闪电攻击帧缓冲区时,如何(通过将它们混合在一起(保持帧缓冲区的透明度?

您不能glBlitFramebuffer是一个复制操作,并且不混合源和目标片段
一种可能性是渲染到纹理(请参见帧缓冲区对象-附加图像(。最后,您可以渲染一个屏幕空间矩形,并将纹理与目标帧缓冲区混合。

最新更新