背景图像上的 OpenGL 透明对象

OpenGL transparent objects over background image

由于我的 Qt3DOffscreenRenderer, which uses the Qt3D framework, I implemented a new offscreen renderer 使用 only/mostly OpenGL 时性能不佳(高 CPU 使用率)。

不幸的是,我无法让绘制在背景图像之上的对象变得透明。我启用了混合并设置了 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

结果如下:

您看不到的是 Qt 徽标的像素的 alpha 为 0.5。

供参考,这是没有透明度的图像:

我只是希望 Qt 徽标有点透明,就像这样:

我设法使用 this example 创建此图像并将其修改为使用上述混合函数和着色器中 0.5 的 alpha 值。

如何为离屏渲染器实现这一点?我尝试了很多参数,但没有成功。

问题是我将 QFramebufferObjectFormat 的内部纹理格式设置为 GL_RGBA32F 但它需要是 GL_RGB32F (即没有 alpha 通道)。