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