プロが教える店舗&オフィスのセキュリティ対策術

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描画を組み合わせて軽快な処理ができる方法」
をご教授していただきたいです。

何卒よろしくお願いします。

A 回答 (1件)

>joglでポリゴンにテクスチャを貼り付けるということで擬似2D的なこと



これはそう複雑ではないと思いますし、自分も2D部分は普通にこの方法でやります。
カーソルだけならせいぜい20~30行くらいでできるんじゃないでしょうか。
Java2D と JOGL を直接混用するのは難しいと思います。

>作っているプログラムの特性

というのが具体的にわからないので、本当に「擬似2D」を避けなければならないのかはわかりませんが。

どうしても嫌なら、スクリーン全体を覆える画像を用意して、
そこに Java2D で書き込んでから、テクスチャに転送してポリゴンとして表示するとか…。
この場合でも最低一枚はポリゴンとして描画する必要がありますね。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
java2Dをあきらめてテクスチャで2D部分を表現することにします。

お礼日時:2009/12/22 00:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!