0

いくつかの視点からシーンをレンダリングし、各レンダリングをファイルに保存することになっている Qt コンソール プログラムがあります。次のように実行されます。

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

このようにすると、すべての画像が空白になります。ただし、画像を保存した後、プログラムを 1 秒間スリープ状態にすると、次のようになります。

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() を試すことができます。

もう 1 つの考えられる問題は、ピクセル バッファーを読み戻そうとしたときにまだ描画中であることです。描画が完了したら glFinish() を呼び出してみてください。

于 2013-02-22T19:13:46.803 に答える