2

処理スケッチに OpenGL の 3D オブジェクトがいくつかあり、それらのオブジェクトの上にマウスが置かれているかどうかを確認する必要があります。一定の変換があるため、元の座標とサイズをマウスの位置と比較することはできません。変換および変換後に変換された画面座標を返す screenX() および screenY() メソッドを既に見つけましたが、回転後に表示サイズを取得する必要があります。

4

1 に答える 1

4

マウスが置かれているオブジェクトを特定することはピッキングと呼ばれ、主に 2 つの方法があります。

  1. カラーピッキング。異なる色を使用して各オブジェクトをバック バッファーに描画します (これは選択時にのみ行われ、色付きのオブジェクトは画面に表示されません)。次に、glReadPixels を使用してカーソルの下のピクセルを読み取り、その色をチェックして、それがどのオブジェクトであるかを判断します。マウスがオブジェクトの上にない場合、背景色が表示されます。詳細はこちら: Lighthouse 3D ピッキング チュートリアル、カラー コーディング
  2. レイキャスティング。カーソル位置からシーンにレイをキャストし、オブジェクトと交差するかどうかを確認します。詳細はこちら:レイ キャスティングによるマウス ピッキング

説明を読むと、オプション1の方がおそらく簡単で、必要なことを実行できます。

于 2013-09-04T08:17:39.420 に答える