4
我试图用OpenGL保存QGraphicsScene作为图像(png或jpeg),但我不希望图像依赖于当前视图(缩放)。这就是为什么我不使用grabFrameBuffer,但我使用render()来代替:在Qt中使用OpenGL呈现QGraphicsScene
QImage imgToSave(1024,768,QImage::Format_ARGB32_Premultiplied);
// fill the image
// and define rectbuffer(), the QRect() containing what I want to save
QPainter painter(&imgToSave);
m_scene = new QGraphicsScene;
// fill the Scene
m_scene->render(&painter,imgToSave.rect(),rectbuffer());
它确实有效。我的问题是:是否使用OpenGL功能? 如果不是,该怎么办?
n.b. :我使用QGLWidget作为我的GraphicsView的视口。而使用OpenGL的显示器正在工作。我的顾虑是关于图像保存。
嗨,谢谢你的回答。 这很奇怪,我编辑了我的第一篇文章,但没有了。 我在说我确实使用QGLWidget作为视口。 OpenGL正在为GraphicsScene的显示工作。 所以我的问题是关于图像保存更多。 我如何指定使用OpenGL与我的QPainter并呈现?我是否必须选择另一种类型而不是QImage? – RyuKa 2012-02-28 13:57:20
我在一个不同于QImage的绘图设备的回答中给出了一个建议。但请记住,您必须执行渲染,然后将数据从卡上拉出并将其推入另一个图像容器(可能是QImage)以保存/操作它 - 所以对于较低分辨率的图像可能看不到很多性能增益。 – cmannett85 2012-02-28 15:27:28
所以你建议QGLFrameBufferObject而不是QImage,即使我使用QGLWidget? – RyuKa 2012-02-28 15:35:10