我的混合似乎无法在Android的OpenGL ES 2中正常工作。我所拥有的是带有Alpha通道的纹理,希望与相应的Alpha一起出现。即使顶部绘制的对象的alpha为1.0,混合也会显示为加性。在片段着色器中,我为alpha值硬编码为1.0,并意识到它似乎在使用color而不是alpha值。
例如,它看起来像这样:
代替这个:
我以正确的顺序绘制,在此示例中,蓝色应在灰色正方形的顶部完全不透明。我尝试了多种混合模式(一个,一个),(alpha,alpha)等,多个绘制顺序,并使用和不使用深度测试。我尝试使用随机混合模式会产生不正确的结果,因此设置混合时,混合模式会发生变化。
我相信问题在于opengl正在混合添加剂颜色。(Alpha,Alpha)对我来说很有意义,当我在着色器中将alpha显式设置为1.0时,我想我会得到一个上面带有蓝色圆圈的正方形(纹理投射到的实际形状)。这没有发生,使我感到困惑,我想我对sfactor和dfactor混合功能还不够了解。
您是否正在使用Android Bitmap类加载纹理?
在Android上使用GLUtils.texImage2D()从位图加载alpha纹理已损坏。这是Google确实应该更好地记录的问题。问题是Bitmap类将所有图像转换为预乘格式,但是除非图像完全不透明,否则它不适用于OpenGL ES。
本文提供有关此点击此处的更多详细信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句