私は一連の他のイメージで円を塗り潰そうとしていて、それらのイメージを円でマスクしています。なぜこれが動作していないのか分かりますが、それを修正する方法については解決策がありません。次のようにopenGLテクスチャマスキング
(処理を使用して)私の描画コードは次のとおりです。
PGraphicsOpenGL pgl = (PGraphicsOpenGL) g; // g may change
// This fixes the overlap issue
gl.glDisable(GL.GL_DEPTH_TEST);
// Turn on the blend mode
gl.glEnable(GL.GL_BLEND);
// Define the blend mode
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
// draw the backgroud
fill(200,200,200);
rect(0, 0, width, height);
// cut out the circle
gl.glBlendFunc(GL.GL_ZERO, GL.GL_ONE_MINUS_SRC_ALPHA);
tint(0,0,0,255);
image(circle, 0, 0);
// draw the circle
gl.glBlendFunc(GL.GL_ONE_MINUS_DST_ALPHA, GL.GL_ONE);
tint(140,0,0,255);
image(circle, 0, 100);
gl.glBlendFunc(GL.GL_ONE_MINUS_DST_ALPHA, GL.GL_ONE);
tint(140,0,140,255);
image(circle, 0, 0);
私は私が望む効果を記述するように見えるhttp://bigbucketsoftware.com/2010/10/04/how-to-blend-an-8-bit-slide-to-unlock-widget/の指示に従ってきました。私は同様の結果でこれをiPhoneで試してみました。ここで
は私が起こることを期待していたもので、何が起こっ:
GL_APHA_TESTを有効にすると、残念ながら違いを確認していないようでした。次にステンシルテストを試してみるつもりです。 – jonbro
また、glAlphaFuncで正しい設定を使用していることを確認する必要があります。 – whoplisp
優秀!あなたが間違っていたglAlphaFuncでした。私はデフォルトを使っていましたが、gl.glAlphaFunc(GL.GL_GREATER、0.0)に設定しました。多かれ少なかれ期待通りに動作します... 2つの円の間の遷移領域にはノイズがありますが、私は描画コードを混乱させることができると思います...おそらく、アルファブレンディングしかし、いっぱいです。 – jonbro