2013-02-22 57 views
0

我有一個Qt控制檯程序,它應該從許多視點渲染場景並將每個渲染保存爲文件。它運行如下:將QGLPixelBuffer保存爲文件給出空白圖像

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

在調用RenderToGLPixelBuffer(k)後,您可以嘗試qApp-> processEvents()。

另一個可能的問題是,當你去閱讀它時,像素緩衝區仍然在繪製。嘗試在完成繪圖時調用glFinish()。