我在 QML 中使用 QQuickFramebufferObject 来绘制 OpenGL 代码。我找到了几种使用 QML 执行 OpenGL 的方法,其中一种方法(在 Qt 的 Squircle 示例中)是在所有内容下方或上方绘制所有 OpenGL,但我使用的是 QQuickFramebufferObject 方法,因为我需要在上方的常规 QML 对象在 OpenGL 绘制的对象下方。
所有 OpenGL 代码都可以正常工作。 QQuickFramebufferObject 的背景需要是透明的,以便可以看到下面的 QML 对象。 (我的 QQuickFramebufferObject 绘制了一个抽象的形状。)但是,QQuickFramebufferObject 似乎在屏幕上遮挡了它的矩形,并且没有在下面显示任何东西。我试过了
glClearColor( 0.0, 0.0, 0.0, 0.0f );
glClear( GL_COLOR_BUFFER_BIT );
这样背景是透明的,但我只是得到一个白色的矩形。即使我完全跳过调用 FBO 的渲染,它仍然会绘制所有内容,所以我认为它超出了 OpenGL 代码以及 QML 如何处理 FBO。
我想要的:
我得到的:
最佳答案
我想通了,这不是 FBO 的错误,而是持有它的 Rectangle 的错误。我从来没有设置它的颜色,因为我只是将它用作其他物体的支架,默认情况下它似乎是白色的,而不是透明的。我将其更改为颜色:“透明”,现在一切正常。
关于c++ - 我可以将 QQuickFramebufferObject 的背景设置为透明吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664078/