我似乎无法让我的混合在 Android 上的 OpenGL ES 2 中正常工作。我所拥有的是带有 alpha 通道的纹理,我希望这些纹理与相应的 alpha 一起出现。即使顶部绘制的对象的 alpha 为 1.0,混合也会显示为加法。在我的片段着色器中,我为 alpha 硬编码了 1.0 的值,并意识到它似乎使用的是color,而不是alpha值。
例如,它看起来像这样:
而不是这个:
我以正确的顺序绘制,在这个例子中,蓝色应该在灰色方块的顶部完全不透明。我尝试了多种混合模式(一,一),(阿尔法,阿尔法)等,多种绘制顺序,以及使用和不使用深度测试。我尝试了产生不正确结果的随机混合模式,所以当我设置它时混合正在改变。
我相信问题在于opengl正在混合加色。(Alpha, Alpha) 对我来说很有意义,当我在着色器中明确将 alpha 设置为 1.0 时,我想我会得到一个正方形(纹理投影到的实际形状),上面有一个蓝色圆圈。这没有发生让我感到困惑,我想我对 sfactor 和 dfactor 混合功能还不够了解。