c++ - 我可以将 QQuickFramebufferObject 的背景设置为透明吗?

标签 c++ qt opengl qml

我在 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。

我想要的:

What I want

我得到的:

enter image description here

最佳答案

我想通了,这不是 FBO 的错误,而是持有它的 Rectangle 的错误。我从来没有设置它的颜色,因为我只是将它用作其他物体的支架,默认情况下它似乎是白色的,而不是透明的。我将其更改为颜色:“透明”,现在一切正常。

关于c++ - 我可以将 QQuickFramebufferObject 的背景设置为透明吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664078/

相关文章:

C++:在 Mac OS X、Qt 5.0 上运行代码(在 Linux 中创建)

opengl - 通过处理纸上的 2d 草图生成 3d 对象

opengl - 渲染不同于单 channel 渲染

C# 使用命令行调用应用程序

C++ 未解析的外部符号?

C++11:std::bind 因 lambda 而崩溃

c++ - Qt progressBar 获取未处理的异常如何检测父小部件何时完成加载

python - 使用 concurrent.futures.ThreadPoolExecutor 时用户界面卡住

opengl - 多少个VAO和VBO

C++ 编译错误(有符号和无符号整数表达式的比较)