2

Javaで次のことができるかどうか知りたいです。LWJGLラッパーを使用してJavaベースのOpenGLアプリで作業しています。各フレームのレンダリング終了のレンダリングループで、GLフレームのピクセルを画像ファイルに保存しています。問題は、フレームのサイズがかなり大きい場合があり、ピクセルをファイルに書き込んでから次のレンダリングループが開始されるまでの間に、顕著なオーバーヘッドが発生することです。

  1. フレームレンダリングの終了時に、フレームバッファからピクセルを読み取ります。
  2. 画像ファイルの書き込みを処理するクラスで新しいスレッドを開始します。

そのようなテクニックが役立つかどうか疑問に思いますか?別のスレッドで実行された場合、次のレンダリングループは画像ファイルの保存を待たずに開始されますか?スレッドでそれはまったく実現可能ですか?私が達成したいのは、GLレンダリングループはファイルの書き込みを待つのではなく、各レンダリングループの最後に新しいピクセルデータをファイル書き込みオブジェクトにフェッチしながらレンダリングを続行することです。

4

1 に答える 1

3

個々の実行中のスレッドを実行するには、以下のようにスレッドクラスを記述します。

public class WritePixelsToImageThread extends Thread { 

    public void run(){
        // place your code here for
        // read pixels from Frame and write that image.
        // this is an individual process
    }
}

そのスレッドを開始した後

new WritePixelsToImageThread().start();
于 2012-07-17T10:58:50.373 に答える