2013-02-22 2 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

Вы можете попробовать qApp-> processEvents() после вызова RenderToGLPixelBuffer (k).

Другая возможная проблема заключается в том, что буфер пикселя по-прежнему рисует, когда вы читаете его. Попробуйте вызвать glFinish(), когда закончите рисовать.

Смежные вопросы