2011-02-10 19 views
0

OpenGLとシェーダが初めてです。私はiPhoneでいくつかの拡張現実感を行い、カメラからのフィードを変更するためにシェーダを混乱させようとしています。OpenGLシェーダの色が「消える」

私が達成しようとしているのは、周囲の色に合わせて色を設定することで、画像内のオブジェクトが消えてしまったという外観です。私は黄色い矩形をしていて、その中に小さな赤い円があります。色を黄色にすることで、赤い円が消えてしまったという印象を与えたい。

これは必ずしも単色ではありませんが、私は最初に基礎を下ろそうとしています。

現在、私は赤い色を明るくするシンプルなシェーダを持っていますが、これは周囲の色に近づきませんので理想的ではありません。

私は100%のシェーダでも、私が見たいもの、あるいはopenglでさえ必要なものではありません。私はそれがiPhone上で与えるパフォーマンスのためにそれを使用しています。

場合、私は基本的に求めている

  1. 誰もが、私は、OpenGL ESとOpenGLのSLを使用して、間違ったツリーを吠えてる
  2. 同様の何もしていたり​​見ていますか?
  3. これも可能ですか?

乾杯。

答えて

1

アルファブレンディングについて聞いたことがありますか? 色は4チャンネルです。赤、緑、青、アルファ(rgba)。アルファチャンネルは透明度を決定します。 0(完全に透明/不可視)または1(完全に透明)の間の任意の値に設定できます。

オブジェクトを非表示にするには、単にアルファを0に設定します。あなたのフラグ・シェーダで例えば :

gl_FragColor.a = 0; 

あなたのプログラムからのアルファ値を変更することで、シェーダを使用せずにこれを達成することができます。たとえば :

glColor4f(1.0, 0.0, 0.0, 0.5); //Draws something red with half transparency (hence the 0.5) 
glVertex3f(...); 
glVertex3f(...); 
glVertex3f(...); 

ちょうどあなたが有効にアルファブレンディングを持っていることを確認してください。

glEnable (GL_BLEND); 
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
+0

画像は、のビデオフィードから来ているので、私はその透明度を設定するために、オブジェクトへのアクセス権を持っていませんiPhoneでこのアプローチがうまくいくとは思わないか、間違っているのですか? – JFoulkes

+0

カメラのフィードからイメージをレンダリングするAPIコールですか、それとも描画するテクスチャですか?透明にする必要がある画像そのものですか、上に描画するオブジェクトですか? – Hannesh

+0

その画像自体、私は上にオブジェクトを描画していません。私は少しこれを見つけた後、私はこれを見つけました:http://www.kurzweilai.net/diminished-reality-software-removes-objects-from-video-in-real-time - これは達成しようとしているものです。イメージをレンダリングするためのAPIコールです – JFoulkes

関連する問題