0

OpenGL/OpenGL ES でレンダリングされた UI フレームワークがあります。一部の UI 要素には透明な領域があります。現在、衝突に境界四角形を使用していますが、ある要素の透明な部分が他の要素と重なっている特定のケースでは、正しい要素を検出できません。

使用したテクスチャの複製を保持したくありません (最後の解決策として、アルファ チャネルのみを保持する場合があります)。

この場合、衝突検出にどのように取り組むべきだと思いますか? ソリューションは、高速でメモリに優しいものでなければなりません。

OpenGL/OpenGL ES テクスチャ メモリの読み取りは、1 ピクセルのアルファ値を取得するために (まれに、イベントでのみ) 使用するのに十分な速さですか? この読み取りは OpenGL/OpenGL ES パイプラインを壊しますか?

編集:

より明確にするために、オブジェクトとポイントの衝突のみが必要です。これは UI ライブラリですが、たとえば、一部のボタンには長方形がなく、それらの境界ボックスが重なる場合があります。この場合、押されたボタンを正しく検出する必要があります。

4

1 に答える 1

0

UI要素が変更されない場合は、ボタンごとにCGPathRefを宣言してから、CGPathContainsPointを使用してボタンが押されたことを検出できます。すべてのボタンをループする必要があるかもしれませんが、コアグラフィックスによって実行されるチェックは、アプリの速度を低下させないほど高速です。

これはピクセルパーフェクト検出であることに注意してください。物理エンジンを使用せずに、より速くまたはより正確に取得することはできません。

編集 :

この場合にPIPアルゴリズムを使用すると機能します...そしてお気づきのように..それに穴があります。複数の穴にも同じアイデアを使用できます。

ここに画像の説明を入力してください

于 2012-12-11T16:01:00.417 に答える