我試圖用一系列其他圖像填充一個圓圈,並將這些圖像蒙上圓圈。我可以看到爲什麼這不起作用,但我無法想出如何解決這個問題的解決方案。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);它或多或少按預期工作......在兩個圓圈之間的過渡區域存在一些噪音,但我認爲我可以混淆一些繪圖代碼...也許它只適用於像素藝術,其中alpha混合儘管如此,還是完全滿滿的。 – jonbro