背景图像上的 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 通道)。
由于我的 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 通道)。