在Qt5.5下使用OpenGL内容捕获Widget

时间:2017-01-11 08:53:10

标签: opengl qt4 qt5 porting

我需要捕获具有OpenGL内容的小部件的屏幕截图(使用Qt5.5下的SoQt 1.5.0类),并将其保存到QImage。到目前为止我尝试过的是:

  • 使用QGLWidget类中的grabFrameBuffer(似乎是 从Qt5开始过时了:它导致黑色区域
  • 使用QOpenGLWidget类中的grabFramebuffer:捕获甚至不起作用,并且没有专用的区域
  • 使用QGLWidget中的renderPixmap class:它会产生一个白色区域

问题似乎位于此if条件中(在Qt4.8下使用QGLWidget :: grabFrameBuffer()并且我们尝试迁移到Qt5.5):

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

有人对此事有暗示吗?

1 个答案:

答案 0 :(得分:0)

你可以做的一件事就是打电话:

auto fb = QOpenGLWidget->defaultFramebufferObject();

这应该是然后QOpenGLWidget将绘制到的帧缓冲,然后你使用OpenGL来获取你需要的东西。