【发布时间】:2014-05-07 15:50:08
【问题描述】:
在 Qt 5.3(测试版)中的 QOpenGLFrameBuffer 上绘画对我来说似乎有点难以捉摸,我只能得到黑色图像。 (我没有尝试过Qt5以前的版本,但没有发现这方面有问题的任何通知)
四处搜索,我在http://dangelog.wordpress.com/2013/02/10/using-fbos-instead-of-pbuffers-in-qt-5-2 复制了确切的样本。
在 createImageWIthFBO() 结束前添加
QImage img=fbo.toImage();
img.save("d:/tmp.jpg");
在没有进一步操作的情况下检查新结果,但结果图像是黑色的。
我错过了什么吗?也许是一些平台问题? (此处为 8.0)
【问题讨论】:
-
它是测试版。你试过在 qt 论坛的 beta 线程中提问吗?
-
作为该代码的作者,我可以确认它在具有 5.2.1、5.3 RC 和 5.4(即开发分支)的 Linux/NVIDIA 上正常工作。按原样复制的 sn-p 是否按预期工作?你有哪个GPU?鉴于它是为 5.0 编写的,您是否尝试使用
QOffscreenSurface(在 5.1 中添加)而不是不可见的 QWindow 来修改它? -
感谢您检查 peppe。 GPU 是 NVIDIA GeForce GT 630M。我正在尝试复制的剪切,因为只添加了我提到的两行来保存图像,这就是产生黑色图像的原因。我刚刚也尝试使用具有相同结果的 QOffscreenSurface。它必须是一些愚蠢的细节......
-
但是如果你不修改它,你能看到它按预期绘制吗?我只是想将 FBO 的问题与图像保存的问题一分为二。
-
我明白了!问题出在 format.setMajorVersion(3); ,它必须是 2。我在 Android 中尝试过,但在创建上下文时失败了。接下来更改为使用 QOffscreenSurface 并且它起作用了,因为我从表面本身获得了格式。现在有了 QWindow,它也可以在我的 Android 手机上使用。
标签: qt opengl qt5 framebuffer