簡體   English   中英

在Qt中使用OpenGL渲染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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM