2017-05-07 19 views
-2

私はAWTと処理に関するいくつかの問題がありますが(推奨しません)、私は大部分の時間を開始することができず、処理ループが停止しています。グラフィックスマトリックスの深さにリンクされています。OpenGLの状態をリセット

この問題が起動条件にどのように関連しているかを確認します(起動した場合、後で失敗しない、または起動しない)。アプリケーションをフルスクリーンで実行していても、グラフィックスの状態を完全に取り除く方法があるのか​​どうか疑問に思っていました。

質問は主に、私が(可能であれば)どのようにして文法上、グラフィックスの新鮮な始まりを得ることができますか?もちろん、他のソリューションや入力は歓迎されており、それ自体を処理するために使用することもできます。

+0

あなたは[mcve]を投稿できますか? –

+0

私はケビン州が真実だと思います。要するに、あなたがやっていることを行うための別の方法があり、OpenGLをリセットする代わりにそこからソリューションが来るかもしれないということです。重要なポイント。 AWTからOpenGLにどうやってアクセスしますか?あなた自身の開発ですか、あるいはJOGLのような別のライブラリを使用していますか?私はSwing/AWT/JOGLのいくつかの問題を発見しました。私は検索後、少なくともMACのためにNEWT実装で解決策を発見しました。 –

+0

今は、N個のコンポーネントをインスタンス化することです。いくつかのコンポーネントは、PAppletにコンポーネントとして追加され、いくつかは、描画ループ中にPAppletインスタンスを使用して描画されるカスタムコンポーネントです。カスタムコンポーネントの性質はコンポジットなので、プッシュマトリックスとクリップ/ノークリップ(マトリックススタックの深さに注意して)を行います。私はこのGL gl =((PJOGL)beginPGL())を見つけました。 endPGL(); OpenGLコンテキストについての 私はそれをちょうど報告する。私は本当にグラフィックスになるとライブラリのユーザーにすぎません。それはなぜ私が処理を選んだのかということです。 – Yggdrasil

答えて

1

OpenGLコンテキストをリセットする方法はありません。デフォルトの状態です。そして、たとえあったとしても、これはあなたの問題を解決することはできません。なぜなら、あなたの問題は、あなたのコードが完了したときにOpenGLコンテキストを入力したときに見つけた状態で残さないという事実から起こるようです。それは確かにデフォルト状態ではありません。

しかし、可能なことは、あなたのコードのためだけにOpenGLコンテキストを作成し、それを一時的に切り替えて、元のものに戻すことです。 WindowsはOpenGLコンテキストに関連付けられておらず、OpenGLコンテキストはウィンドウに関連付けられていません。それはあなたが望むように(ピクセルフォーマットが互換性がある限り、それらは大部分のウィンドウ/コンテキスト設定用です)、選択してミックスします。

処理で作成したOpenGLオブジェクト(テクスチャ、バッファオブジェクト)へのアクセスが必要な場合は、コンテキストデータを共有できます(状態を共有しないので安全です)。あなたのコードが所有していないものを変更したり、完全に削除したりしないでください。

あなたが実行しようとしている問題の1つは、JOGL/AWTを使用しているすべてのことです。図書館のリファレンスで一見すると、のドロウアブルが現在アクティブなOpenGLコンテキストにバインドされているかどうかを判断する明白な方法が見つかりませんでした。現在のコンテキストを取得するのは簡単です。しかし、JOGL自体はオープンソースなので、容易に利用できる方法がない場合は実装するのは簡単です(ライブラリに追加する価値もあります)。

関連する問題