我正在开发一款适用于Android的绘图应用,允许用户使用他们的手指进行绘制。它使用OpenGL ES 2.0使用点精灵技术和FBO进行快速渲染。我有一个问题是将各个点精灵混合在一起,其中透明区域在FBO上正确渲染,但是当精灵重叠时,我可以看到在前一个精灵上渲染的透明区域。以下是目前的情况:
这是使用这个混合等式:
GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA);
如果我将绘图颜色更改为白色或黑色,则效果非常好:
我也尝试过这种混合功能:
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_DST_ALPHA);
结果如下:
这几乎是完美的,但相反白色,主色应该变暗。关于正确混合功能应该达到什么目的的任何想法?
注意:的 我已经知道混合功能如何通过获取源和目标颜色的分数来实现,在我的情况下将它们加在一起,这样就可以将颜色变为白色。所以我想知道我想要实现的只能使用混合功能,还是需要其他东西呢?如果需要,我可以提供片段着色器中的代码,但对我来说它看起来不像片段问题。