私は特別な用途のグラフ作成プログラムを書き始めており、OpenGL を使用してグラフィックを生成することに傾倒しています。最終的な目標は、基本的なフレームワークで 2D グラフと 3D グラフの両方に対応するアーキテクチャです。
生成されたグラフを画像としてエクスポートすることは重要な機能です。最終的には、グラフの 2D 投影のベクトル画像を生成するコードを作成する予定です。ただし、当面は、グラフを高解像度の画像 (アプリケーション ウィンドウよりもかなり大きい画像) としてエクスポートできるようにしたいと考えています。
私はこのアプリケーションを Java で作成し、LWJGL OpenGL ラッパーを使用しています。表示ウィンドウのスクリーンショットを撮る方法はわかりましたが、より大きな画像を作成することに成功していません。非表示のキャンバスを作成しようとしましたが、うまくいきません。
ドキュメンテーションでは、Canvas の isDisplayable() メソッドは true を返さなければならないとここで述べています。そのために、isDisplayable() メソッドをオーバーライドして常に true を返すようにしました。これにより、フレーム内にあるかどうかを気にする必要はありませんが、これは動作しません。代わりに、次のエラーがスローされます。
java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
at org.lwjgl.opengl.GL20.glDeleteProgram(GL20.java:311)
問題は、トップレベル ウィンドウからのいくつかのプロパティも必要であるようですが、ダミーの Frame クラスを作成しても、フレームで setVisible(true) を呼び出すまで、以前と同じエラーが発生します。
これらのグラフィックス プロパティを偽装して、トップレベル ウィンドウが表示されていると思わせる方法を知っている人はいますか? もっと簡単な方法を知っている人はいますか?