这两天在做的过程中发现一个华为手机opengl es的兼容性问题:同一段着色器代码,在小米手机上效果正常,但是在一台华为手机上确没有效果。
通过对比发现,是opengl es变量的精度声明问题。一般情况下顶点着色器中可以不指定变量的类型,默认是高精度;而在片元着色器中则必须指定变量的精度。知道问题处理哪里了就好办了,直接把片元着色器代码中变量的精度声明加上。
修改前
修改后
至于为什么在片元着色器变量没有加精度的情况下,小米手机也有效果,个人猜想或许是gpu不一样或者做过优化吧。
本文作者:周秦瑶(scott)
本文为原创作品,未经允许不得转载。