0

我有一个 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);
}

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

4

1 回答 1

0

你可以在调用 RenderToGLPixelBuffer(k) 之后尝试 qApp->processEvents()。

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

于 2013-02-22T19:13:46.803 回答