- 締切済み
awt+joglでの3D+2D描画に関して
joglを使って簡単なポリゴンにテクスチャを貼り付けて、 マウスイベントによって回転・移動を行えるプログラムを 作っています。操作を始めるとマウスカーソルの代わりに 独自の画像をマウスカーソルが表示されていた部分に 表示されるようにしたいと考えています。 質問は、マウスカーソルの代わりに表示させる画像の 表示方法についてです。 開発環境 SDKとして、eclipse日本語化プロジェクトのpleiadesの バージョン3.5の最新のものを使用しています。(jreあり) PCは、自作でスペックは以下の通りです。 CPU:penD940 3.2GHz メモリ:2GB HD:320GB G/B:GForce6600 質問の意図をわかりやすくするために簡単な説明と これまでの進展を説明したいと思います。 まず、joglを使用する方法としてGLCanvasとGLJPanelの どちらかにGLEventListenerをaddして利用する方法があると 思います。2Dの描画を加える場合、たとえば、GLCanvasを継承した クラスを独自に作成し、paintメソッドをオーバーライドして 3D描画に2D描画を上書きする方法があると思います。この方法だと、 GLCanvasではダブルバッファが有効ではないため、非常にちらついた 表示になってしまいます。GLJPanelを利用すればその問題が解消 されますが、残念なことに処理が重くなり操作性が著しく落ちてしまいます。 そこで、GLCanvasをベースにGLPbufferクラスを利用してjoglの描画を オフスクリーンに描画するというように独自にダブルバッファの 処理を作成しました。この方法では、GLJPanelよりも多少軽く 動作しているものの、残念ながら操作性が維持できる処理速度を 確保することができませんでした。 おそらく、問題点はオフスクリーンとして使っているBufferedImageの 書き換え時の処理に時間がかかっているものと推測しました。 そこで、さらにBufferStrategyクラスも利用してみましたが、 GLPbufferの描画をbufferedImageに書き込む処理でつまずいてしまう ようであまり効果がありませんでした。 joglでポリゴンにテクスチャを貼り付けるということで擬似2D的なことは 可能ですが、作っているプログラムの特性上、画像サイズの管理やマウス ポインタの位置との連動を行うことになるため複雑になるのは避けたいです。 というところで、現在こんな具合で作業を進めて参りました。 質問内容としてましては、上記以外の方法で、 「3D描画と2D描画を組み合わせて軽快な処理ができる方法」 をご教授していただきたいです。 何卒よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hirusagari
- ベストアンサー率64% (20/31)
>joglでポリゴンにテクスチャを貼り付けるということで擬似2D的なこと これはそう複雑ではないと思いますし、自分も2D部分は普通にこの方法でやります。 カーソルだけならせいぜい20~30行くらいでできるんじゃないでしょうか。 Java2D と JOGL を直接混用するのは難しいと思います。 >作っているプログラムの特性 というのが具体的にわからないので、本当に「擬似2D」を避けなければならないのかはわかりませんが。 どうしても嫌なら、スクリーン全体を覆える画像を用意して、 そこに Java2D で書き込んでから、テクスチャに転送してポリゴンとして表示するとか…。 この場合でも最低一枚はポリゴンとして描画する必要がありますね。
お礼
アドバイスありがとうございます。 java2Dをあきらめてテクスチャで2D部分を表現することにします。