在iPhone上使用OpenGL ES的纹理透明度画笔

时间:2012-03-26 05:06:28

标签: iphone opengl-es brush

我是OpenGL的新手,并试图通过调整画笔笔划的alpha值来实现橡皮擦画笔,该画笔将使用画笔描边擦除纹理以显示opengl视图的背景。 OpenGL视图的opaque属性设置为NO。

我使用Apple的GLPaint作为起点。我使用的画笔是一个纹理,其中心为alpha零,在圆形边缘处径向褪色alpha为1。

我使用glColorMask(0,0,0,1)仅在alpha通道上绘制。

现在,问题在于混合功能。如果我使用glBlendFunc(GL_DST_ALPHA, GL_SRC_ALPHA),它会起作用,但不像我预期的那样。

我希望得到的alpha是目标alpha的最小值(屏幕上已有的alpha)和画笔的alpha。

混合函数glBlendFunc(GL_DST_ALPHA, GL_SRC_ALPHA)在......等情况下不起作用。

让我们说屏幕(目的地)的alpha值为0.5。当画笔的边缘(画笔的alpha为1)触及此像素时,结果像素的alpha值应保持为0.5(最小值为1和0.5)。但是通过上面的混合功能,它会变成(1 * 0.5 + 1 * 1),再次变得更不透明。

我应该使用哪些混合选项来获得平滑的擦除笔刷?我还有其他方法可以解决吗?

0 个答案:

没有答案