将QGLPixelBuffer保存到文件会显示空白图像

时间:2013-02-22 16:13:56

标签: c++ qt opengl

我有一个Qt控制台程序,它应该从多个视点渲染场景并将每个渲染保存到文件中。它运行如下:

for(int k = 0; k < numberOfViewpoints; ++k)
{
    RenderToQGLPixelBuffer(k);
    QString fname = GetFileName(k);
    QImage im = pixBuffer->toImage();
    im.save(fname);
}

如果我这样做,所有图像最终都是空白的。但是,如果我在保存图像后让程序休眠一秒钟:

for(int k = 0; k < numberOfViewpoints; ++k)
{
    RenderToQGLPixelBuffer(k);
    QString fname = GetFileName(k);
    QImage im = pixBuffer->toImage();
    im.save(fname);
    Sleep(1000);
}

然后它按预期工作,图像很好。但是,这显然会大大增加处理时间。我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以在调用RenderToGLPixelBuffer(k)后尝试qApp-&gt; processEvents()。

另一个可能的问题是当你去回读它时,像素缓冲区仍在绘制。完成绘图后尝试调用glFinish()。