2009-04-03 3 views
1

私はiPhone SDKの標準GLGravityViewの例でCAEAGLLayerにEAGLContextを描画しています。シーンをOpenGLのマスクとしてレンダリングするにはどうすればよいですか?

私がしようとしているのは、私のビューを別のビューの上に置き、OpenGLでレンダリングしたものを使って、その下のビューをマスクすることです。

下の図は花の写真で、私は自分のOpenGLビューを一番上に置いて、OpenGLのクリアカラーを不透明な黒に設定して球を描画します。球体を黒く切って、花の写真の円形部分だけを露出させたい。球体(半透明)と花の両方を黒色にカットして表示する方が良いでしょう。

私はビュー設定し、ちょうど球をレンダリングする前に

glColor4f(1.0, 1.0, 1.0, 0.5); 

を呼び出したときに、私は

glView.backgroundColor = [UIColor clearColor]; 
glClearColor(0.0, 0.0, 0.0, 1.0); 

と呼ばれてきました。

球はオフホワイトになり、下の花は見えません。私はこれに驚かない。

代わりにマスクを作成する方法を知っている人はいますか?

ありがとうございました。

答えて

0

「EAGLayer」などと呼ばれるものを使って同様のことをしました。最初に背景を描画し、さらに上に物を描画します。これは、ボトム "レイヤー"のタップ機能がないか最小限であったために機能しました。下の「レイヤー」で機能をタップしたいときは、特定のxy座標付近のタップを探していました(実際のレイヤーと同じようにボタンをドラッグ/ドロップするのではなく)。

本当に何をしたいのかによって異なります下の層と一緒に。あなたが望むのが花の写真なら、私のアプローチはうまくいきます。より複雑なUIコントロールをドラッグ&ドロップしたい場合、私のアプローチはうまくいかないでしょう。

1

あなたはおそらく、今ではあきらめましたが、ちょうど...

場合には、私はあなたのglClearColor(0.0、0.0、0.0、1.0)がglClearColor(0.0、0.0、0.0、0.0)であるべきだと思うからアルファ= 1の "不透明な黒"ではなく、アルファ= 0のビューを透明な黒にクリアします。

また、OpenGLビューが不透明になっていないことを確認する必要があります。

+0

これは私の解決策でした – Chaos

関連する問題