![](/img/trans.png)
[英]Simplifying a Qt program and I am having trouble displaying an image in Qt using QGraphicsScene
[英]Rendering a QGraphicsScene using OpenGL in Qt
我試圖將OpenGL的QGraphicsScene保存為圖像(png或jpeg),但我不希望圖像依賴於當前視圖(縮放)。 這就是為什么我不使用grabFrameBuffer而是使用render()代替:
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功能? 如果沒有,怎么辦?
nb:我正在使用QGLWidget作為我的GraphicsView的視口。 使用OpenGL的顯示器正在工作。 我擔心的是圖像保存。
我猜:不。 因為要通過OpenGL渲染QGraphicsScene,你需要指定一個QGLWidget派生對象作為場景的視口 - 你沒有,所以它幾乎肯定使用光柵引擎。 其次,QPainter使用你構造它的任何繪圖設備作為后端,你指定了一個不使用OpenGL的直接QImage。
如果您不能/不會通過QGraphicsView
使用QGLWidget
,那么您可以渲染到QGLFramebufferObject
。 但這帶來了它自身的復雜性,即你必須事先創造一個隱藏的背景。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.