OpenGLコンテキストをリセットする方法はありません。デフォルトの状態です。そして、たとえあったとしても、これはあなたの問題を解決することはできません。なぜなら、あなたの問題は、あなたのコードが完了したときにOpenGLコンテキストを入力したときに見つけた状態で残さないという事実から起こるようです。それは確かにデフォルト状態ではありません。
しかし、可能なことは、あなたのコードのためだけにOpenGLコンテキストを作成し、それを一時的に切り替えて、元のものに戻すことです。 WindowsはOpenGLコンテキストに関連付けられておらず、OpenGLコンテキストはウィンドウに関連付けられていません。それはあなたが望むように(ピクセルフォーマットが互換性がある限り、それらは大部分のウィンドウ/コンテキスト設定用です)、選択してミックスします。
処理で作成したOpenGLオブジェクト(テクスチャ、バッファオブジェクト)へのアクセスが必要な場合は、コンテキストデータを共有できます(状態を共有しないので安全です)。あなたのコードが所有していないものを変更したり、完全に削除したりしないでください。
あなたが実行しようとしている問題の1つは、JOGL/AWTを使用しているすべてのことです。図書館のリファレンスで一見すると、のドロウアブルが現在アクティブなOpenGLコンテキストにバインドされているかどうかを判断する明白な方法が見つかりませんでした。現在のコンテキストを取得するのは簡単です。しかし、JOGL自体はオープンソースなので、容易に利用できる方法がない場合は実装するのは簡単です(ライブラリに追加する価値もあります)。
あなたは[mcve]を投稿できますか? –
私はケビン州が真実だと思います。要するに、あなたがやっていることを行うための別の方法があり、OpenGLをリセットする代わりにそこからソリューションが来るかもしれないということです。重要なポイント。 AWTからOpenGLにどうやってアクセスしますか?あなた自身の開発ですか、あるいはJOGLのような別のライブラリを使用していますか?私はSwing/AWT/JOGLのいくつかの問題を発見しました。私は検索後、少なくともMACのためにNEWT実装で解決策を発見しました。 –
今は、N個のコンポーネントをインスタンス化することです。いくつかのコンポーネントは、PAppletにコンポーネントとして追加され、いくつかは、描画ループ中にPAppletインスタンスを使用して描画されるカスタムコンポーネントです。カスタムコンポーネントの性質はコンポジットなので、プッシュマトリックスとクリップ/ノークリップ(マトリックススタックの深さに注意して)を行います。私はこのGL gl =((PJOGL)beginPGL())を見つけました。 endPGL(); OpenGLコンテキストについての 私はそれをちょうど報告する。私は本当にグラフィックスになるとライブラリのユーザーにすぎません。それはなぜ私が処理を選んだのかということです。 – Yggdrasil