4

より大きなプロジェクトの一環として、3Dレンダリングをビットマップ形式にエクスポートするJOGLを使用した機能を実装しようとしています。これを行うには、GLJPanelを作成し、必要なシーンを描画してから、ビットマップを抽出します。これは、システムの画面に少なくとも1つのウィンドウが表示されている限り、すべて正常に機能します。必ずしも、描画先のパネルを含むウィンドウである必要はありません。

ただし、ウィンドウを表示せずにこれを実行しようとすると、GLJPanelは描画しません。JOGLソースをステップスルーすると、有効なピアがない限り、つまりaddNotify()が呼び出されていない限り、描画されないことがわかります。ドキュメントによると、addNotify()は、パネルが表示されているウィンドウ階層の一部になっている場合にのみ呼び出されます。GLCanvasに変更しても、大きな違いはありません。障害モードは異なります。WindowsOnscreenGLDrawable.realizedが設定されていません。これは、lockSurfaceが戻​​りLOCK_SURFACE_NOT_READY、makeCurrent()が失敗することを意味します。

ウィンドウを表示せずに3Dシーンを作成およびエクスポートできるJavaアプリを作成する方法についてのヘルプを歓迎します。

4

2 に答える 2

5

私が自分の質問に答える必要があるかどうかはわかりませんが、ここで私が見つけたものは現在うまくいっているようです.

キーはGLPbuffer です。これはオフスクリーン GLAutoDrawable であり、目に見えるコンポーネント階層なしで作成できます。

この記事は、それを機能させるのに役立ちました。完全に機能することを確認するまで、この回答の受け入れを中止します。

また、答えはこのフォーラムからのものであり、私自身の貧弱な頭脳ではありません。

于 2009-01-21T18:47:42.307 に答える
0

メソッドを調べる必要があります: glReadPixels() 詳細はこちら. 基本的には、多かれ少なかれ次のように機能します。

Init(); //doing some initializations in your JOGL app

glDrawBuffer(GL_BACK);

DrawGLScene(); //doing drawing here

glReadBuffer(GL_BACK);

//Copy the image to the array imageData
glReadPixels(0, 0, WIDTH, HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, imageData); 
于 2009-01-21T17:58:36.803 に答える