最近我一直在琢磨,opengl es 3.0到底能不能搞3D游戏?这事儿听着简单,但我总觉得得亲自动手试试看。我怀疑它是不是太老了,跟不上现代手游的需求了。
于是我就开始动手了。我先翻出我的旧手机,那是一台安卓的设备,确认它支持opengl es 3.0。然后,我安装了基本的开发工具,开个IDE,建了个空项目。我搞了个简单的立方体模型当作基础,想着先让它在屏幕上动起来。
第一步:试试水
我先写代码加载了一个立方体,设置点坐标和着色器。结果一运行,屏幕上只出现个线框,看着挺简陋的。我加入颜色填充,这步倒顺利,立方体变成了彩色块儿。但我想看看3D效果,就加了个旋转功能,用了个矩阵让它转圈儿。
- 动起来没大问题,就是画面不够流畅。
- 试了试纹理贴图,贴个图片上去,立方体就变成有个性的方块。
- 光照我也加了点,设置个光源方向,阴影效果还算凑合。
我提升难度。我搞了个稍微复杂的模型,像个小机器人似的玩意儿。这回,系统开始发飙了,画面时卡顿,手机有点发热。我分析了下帧率数据,发现平均每秒30来帧,算不上丝滑,但不算太差。
深挖渲染力
我这才开始剖析它的强大之处。opengl es 3.0确实有能力处理3D元素,比如那套着色器挺灵活,让我调颜色和光照轻松不少。我试着加入多个对象,让几个立方体同时动,渲染效率还行,不掉链子。意外发现是,它支持抗锯齿啥的,粗糙感少了点。
- 多边形处理不算弱,复杂模型也能硬撑。
- 纹理压缩挺省内存的,省着点用不容易崩。
我收个尾。把这小demo导出跑在手机上,感觉opengl es 3.0真能搞点简单3D游戏。就是别整太高端的特效,不然卡成狗。实践让我明白了它渲染力不错,但得结合实际硬件。现在回想这事儿,挺过瘾的,动手试才是王道。