最近的一个项目中,关于面向Android平台的贴图压缩格式是否需要考虑兼容OpenGL ES2.0的讨论,做了一个简要的评估报告。这是根据现阶段运营反馈数据做出的分析,并不表示为一个最终的决定。
这里技术评估主要考虑三方面的要素:需求的必要性,系统理解复杂度和运行解码效率的经济性。目前采用的是平台默认压缩纹理格式ETC2,随着项目持续运营的数据更新,再据实做出调整,比如ETC1+Alpha通道的方案。
- 原因
- 结论
- 运营数据
- 软件向分析
- 硬件向分析
- 分析结果
- 目前的一个反例
- 参考资料
原因
X项目客户端,部分贴图压缩采用了ETC2格式(特别对于那些尺寸是4的倍数(可以是NPOT格式,比如:20×80)的贴图有高压缩比。ETC2格式匹配的是OpenGL3.0版本,在只支持OpenGL2.0的手机设备上部分贴图会导致失真效果。
ps1 兼容:OpenGL3.0默认兼容OpenGL2.0。
ps2 适配:贴图ETC2压缩格式不适配OpenGL2.0,需要另行处理。
结论
先给结论,暂时不考虑适配只支持OpenGL2.0的手机设备。
运营数据
软件向分析
OpenGL 3.0
发布日期:2008年8月11日。
Android系统主要在6.0版本以上
发布日期:2016年8月份。
Android少数5.1.1版本
发布日期:2015年3月11日。
硬件向分析
我们产品统计数据
三星,华为,小米,oppo,vivo,LG都是主流大厂,从经济因素考虑,产品都是引领市场,不可能滞后于市场技术迭代。
市场统计数据
骁龙按照性能水平分四级,骁龙800系列、600系列、400系列和200系列处理器,以骁龙600为例。
骁龙600
发布时间
2013年1月7日发布。
GPU
速度更快的Adreno320 GPU,图形处理性能较上一代的Adreno 305 GPU提高300%以上。支持OpenGL ES 3.0、DirectX、OpenGL、Renderscript Compute和FlexRender™等先进的图形和计算接口(API)。
终端
有多款基于骁龙600系列处理器的终端已经发布。
- HTC One(801e)
- LG G Tablet 8.3
- OPPO x909t
- vivo Xplay (X510t)
- HTC One (801s)
- vivo Xplay (X510w)
- HTC One (802t)
- HTC One (802w)
- 华硕A80
- HTC One (802d)
- 三星Galaxy S4 (I9508)
- 小米2S
- nubia Z5S mini
- Pantech VEGA a870
- HTC Butterfly s(901e)
- HTC Butterfly s(901s)
- HTC Butterfly s(9088)
- HTC Butterfly s(919d)
- HTC Butterfly s(9060)
- HTC One max(803e)
- HTC One max(803s)
- HTC One max(8088)
- HTC One max(809d)
- HTC One max(8060)
- HTC One max(8160)
- LG G PRO
分析结果
以骁龙600应用的手机设备和android系统的发布时间,可以推导出:至少2013年以后主流手机都支持opengl3.0
目前的一个反例
魅族mx4
上市时间 2014(运营部门一致认为国内海外都不考虑该品牌)。
参考资料
- NPOT Texture https://www.khronos.org/opengl/wiki/NPOT_Texture
- 从未停止!OpenGL的版本历史和发展 https://www.cnblogs.com/vertexshader/articles/2917540.html
- 骁龙600 https://baike.baidu.com/item/%E9%AA%81%E9%BE%99600/1922473?fr=aladdin
- Android 5.1发布时间确定!http://news.mydrivers.com/1/396/396806.htm