11

説明のために次の画像を検討してください。 ここに画像の説明を入力

最初は、画面がピンク色になるまで、画面全体/ステージを個々の画像で埋めます。ピンク色の各ブロブは、ステージに追加する個別のイメージ アクターです。

ここで、ユーザーが画面に触れるたびに、タッチ イベントが発生した Image の一部を消去する方法で touchDown メソッドを実装したいと考えています。ただし、そのタッチ イベントは、ピンクのブロブ アクターの背後または上方にある他のイメージ/アクター/テクスチャ領域に影響を与えるべきではありません。OpenGL ESを使用してlibgdxでこれを達成するにはどうすればよいですか? この点で私を助けてください。

TextureRegion を変更する方法を説明するこのリンクを見つけましたが、このブログで説明されている手法を使用して問題を解決する方法がわかりません。ここにリンクがあります

4

1 に答える 1

5

FBO とステンシル バッファを使用できますか?

「ピンク」レイヤーの FBO とそのステンシル バッファーをセットアップします。タッチダウンしたら、タッチをマスクとしてピンクの FBO のステンシル バッファーに描画します。ピンクの FBO を描画すると、タッチした領域はレンダリングされないため、その背後にある背景の FBO を見ることができます。

このリンクhttp://www.opengl.org/archives/resources/faq/technical/rasterization.htmのセクション 14.050 に、ステンシル バッファーのセットアップ方法が記載されています。

次のように OpenGL の状態を設定できます。

glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_ALWAYS, 0x1, 0x1);
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);

その後のレンダリングでは、レンダリングされるピクセルごとにステンシル バッファーに 1 ビットが設定されます。

マスキングが正しい方法で行われるように、何かをいじる必要がある場合があります (触れていない場所ではなく、触れた場所をマスクします)。

于 2012-05-10T04:13:34.467 に答える