2014年年中,在使用着色器进行图形渲染时,发现shader中uniform
、varying变量的if或for判断会严重影响帧率,而且这一现象与Android ROM平台没有关系。这里对该现象进行一个记录,并给出对应的解决方案。
- 该文的测试平台:
硬件设备(GPU)为高通Adreno 200、Adreno 203、Adreno 205。 - 测试手机为:
摩托罗拉(GPU为Adreno 200、android系统版本为2.2)
联想S820e(GPU为Adreno 203、android系统版本为4.1)
联想A600e(GPU为Adreno 203、android系统版本为4.0)
华为U8800(GPU为Adreno 205、android系统版本为2.3) - 测试案例代码:
http://download.csdn.net/detail/aiwusheng/8087083
一、结论:
验证结论:
多个uniform变量、varying变量的if判断、for循环判断,造成了Opengl ES帧率的成倍降低;若需要使用多个if判断、for循环判断,可更改为局部变量相关数据判断。
经测试以上列出的各厂商手机均存在这一问题,与android rom无关。