2012-01-26 4 views
0

私はgtk描画エリアウィジェットでOpenGLを使って立方体を描画しています。今私はドラッグアンドドロップなどのために選択することができるようにキューブに "クリック"のようなイベントを添付したい。 私はどのように進めるべきですか?gtk描画領域でOpenGLを使用して描画されたキューブにイベントを添付するにはどうすればいいですか?

+0

[OpenGLでファセットを選択する最も簡単な方法は何ですか?](http://stackoverflow.com/questions/513188/whats-the-easiest-way-to-pick-a-facet-in- OpenGL) – datenwolf

答えて

5

OpenGLはシーングラフではありません(* gah *私は疲れていますが、もう一度やり直してください)。それは物を描きます。 3D空間で三角形の束を与え、2Dに投影し、望みに引き寄せてから忘れてしまいます。

あなたの立方体を描画した後は、もはやOpenGLの周りには一貫性のある構造として識別されるものはありません。それはあなたのの部分に完全にです。

何がしなければならないことである。

  • はあなたが
  • バック変換するためにマウスイベントを使用し
  • GTK GL領域にマウスイベントハンドラをインストールし描画したシーンの表現を維持しますポインタをシーン座標に変換します。基本的には、シーンに光線を「射撃」し、どこにヒットするかをテストします。幸いなことに、レイキューブの交差点をテストするのは簡単です。光線境界球テストを使用して、光線が近づいているかどうかを最初にテストすることで、速度を上げることができます。あなただけの "周りにドラッグすることはできません:それはドラッグのために選択され、ところで

    をドロップすることができるようにフォローする

キーワードは


を「OpenGLのオブジェクトピッキング」されています幾何学的な構造という意味では、 "オブジェクト"を知らないので、OpenGLでは "オブジェクト"と呼ばれています。 OpenGLはオブジェクトを指定しますが、実際には抽象化されたデータソースです(テクスチャや頂点とインデックスデータのバッファなど)。操作可能なシーンを作るものはありません。

シーン内で何かを変更する場合は、OpenGLを使用して、完全にを再描画にする必要があります。

+0

+1 "OpenGLはシーングラフではありません" – Kromster

関連する問題