这个问题爆发于一个多月前,几经总结发现只要mali的gpu都有一样的问题.断断续续,前后找这个问题找了能有10天.直接说结果.
结论就是,在mali上,深度所用的采样器,如sampler2D需要指定为highp,即如:
highp sampler2D Samp_RT_Depth;
如果不这样的话精度不够,后续运算的结果就错了,其他手机没有这个问题.规范上,fragment shader里,默认sampler2D的精度是lowp.
mediump也不行,必须highp.其他手机上尝试,mediump没有问题.
总的来说,具体原因不清楚.不过对于解决问题来说不重要,直接所有shader里的精度需求高的采样器直接写成高精度.
结合我的对比,最终在点击打开链接这里,找到了解决办法.这个问题实在是难解决,我怀疑过太多方面,广度优先地四处撞与试.不断提高图形调试与解决能力吧,现在这段时间专职改图形bug.