[Qt-interest] QGraphicsView and OpenGL rendering artifacts on Mac OS X

John Clayton (gmail) johnclayton72 at gmail.com
Sun Aug 9 13:03:26 CEST 2009


And of course, having a link to the promised screen shots would help;

http://gallery.me.com/john_clayton#100372

--
john

On 9/08/2009, at 1:01 PM, John Clayton (gmail) wrote:

> Hi All,
>
> I'm rendering a quad into a scene via opengl, and have a redraw  
> issue that I [so far] haven't been able to track down, or solve.
>
> The Problem:
> When resizing the opengl based qgraphicsview - the newly exposed  
> edges are filled with rubbish before finally being redrawn  
> correctly.  In this case, the non-scientifically measured delay  
> before the view is finally redraw is somewhere in the vicinity of  
> 200 milliseconds (i.e. gut feel).
>
> My Questions:
> 1) Why am I seeing redraw artifacts in a double-buffered GL view?
> 2) Why does the view eventually redraw itself correctly after what  
> feels like 200-ish milliseconds.
>
> I've got a couple of screen shots in a gallery, showing the results  
> of these artifacts.  The artifacts show up when the GL content is  
> resized via a QSplitter - I don't know if having the OpenGL based  
> QGraphicsView embedded in a splitter is the cause of this.  The  
> track view in the shots redraws correctly all the time, but its not  
> open-gl based.
>
> Has anyone encountered something like this before, if so - any ideas  
> how I can fix it?
>
> the code to set up the previewView (QGraphicsView) is as follows:
>
>     QGLFormat fmt;
>
>     PreviewGLWidget* viewport = new PreviewGLWidget(fmt);
>     _ui->previewView->setViewport(viewport);
>
>     viewport->makeCurrent();
>
>     _contentLoader = new ContentLoaderController(_document->project,  
> viewport);
>     _previewScene = new PreviewScene(_document, _contentLoader);
>
>     _ui->previewView- 
> >setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
>     _ui->previewView->setDragMode(QGraphicsView::ScrollHandDrag);
>     _ui->previewView->setCacheMode(QGraphicsView::CacheNone);
>     _ui->previewView- 
> >setResizeAnchor(QGraphicsView::AnchorViewCenter);
>     _ui->previewView- 
> >setTransformationAnchor(QGraphicsView::AnchorViewCenter);
>     _ui->previewView->setAlignment(Qt::AlignCenter);
>     _ui->previewView- 
> >setRenderHints(QPainter::HighQualityAntialiasing |  
> QPainter::SmoothPixmapTransform);
>     _ui->previewView->setScene(_previewScene);
>     _ui->previewView->setBackgroundBrush(Qt::black);
>     connect(_previewScene, SIGNAL(selectionChanged()), this,  
> SLOT(slotPropagatePreviewSelectionStateToTrackView()));
>
> Any tips appreciated, thanks for your time/help.
>
> --
> John Clayton

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20090809/b12548b2/attachment.html 


More information about the Qt-interest-old mailing list