2017-01-11 2 views
0

Ich muss einen Screenshot eines Widgets mit OpenGL-Inhalt erfassen (mit SoQt 1.5.0-Klassen unter Qt5.5) und es in einem QImage speichern. Was ich bisher versucht ist:Erfassen eines Widgets mit OpenGL-Inhalt unter Qt5.5

  • grabFrameBuffer von der QGLWidget-Klasse (die obsolet, da QT5 zu sein scheint): es ist in einem schwarzen Bereich führt
  • mit grabFramebuffer aus der QOpenGLWidget Klasse: die Erfassung nicht einmal arbeiten, und es gibt keinen Bereich, um es gewidmet
  • mit renderPixmap aus der QGLWidget Klasse: es ergibt sich eine weiße Fläche

Das Problem scheint in diesem, wenn die Bedingung angeordnet zu werden (die QGLWidget verwendet: : grabFrameBuffer() unter Qt4.8 und die wir versuchen zu Qt5.5 migrieren):

if(dynamic_cast<QGLWidget*>(rendererCourant->getNormalWidget())) 
{ 
    ((QGLWidget*)rendererCourant->getNormalWidget())->updateGL(); 
    _image = ((QGLWidget*)(rendererCourant->getNormalWidget()))->grabFrameBuffer(); 
} 

Hat jemand einen Hinweis auf die Sache haben?

Antwort

0

Eine Sache, die Sie tun können, ist Aufruf:

auto fb = QOpenGLWidget->defaultFramebufferObject(); 

Dies sollte die Framebuffer sein, die dann QOpenGLWidget zu zeichnen und dann verwenden Sie OpenGL zu packen, was Sie brauchen.

Verwandte Themen