我在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。
我想要的是什么:
我得到了什么:
答案 0 :(得分:2)
我想通了,这不是FBO的错误,而是持有它的Rectangle。我从来没有设置它的颜色,因为我只是将它用作其他物体的支架,这似乎是默认的白色,而不是透明的。我将其改为颜色:“透明”,现在一切都很好。