我有一个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);
}
然后它按预期工作,图像很好。但是,这显然会大大增加处理时间。我有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
您可以在调用RenderToGLPixelBuffer(k)后尝试qApp-&gt; processEvents()。
另一个可能的问题是当你去回读它时,像素缓冲区仍在绘制。完成绘图后尝试调用glFinish()。