Android系统View之GLSurfaceVIew学习
[TOC]
文章参考:https://zhuanlan.zhihu.com/p/271270354
文章参考:https://zhuanlan.zhihu.com/p/145331514
概述
Android对OpenGL这块封装是非常好的,也是非常隐蔽的,一般使用者直接使用GLSurfaceView即可达到需求。最近项目中将很多功能下层到c++层,这样必须对OpenGL 底层逻辑有所了解。Android虽然提供OpenGL 各个版本的So库,但是并没有对底层api做封装,所以如果是自己想用C++写OpenGL,最好的方式学习Android源码。
GLSurfaceView使用
1 | surfaceView = findViewById(R.id.triangle_api_surfaceView) |
可以看到使用GLSurfaceView非常简单,只要APP开发者实现以下三个方法:
1 | onSurfaceCreated(gl: GL10?, config: EGLConfig?) |
GLSurfaceView渲染模式
OpenGl ES关于渲染方式有以下两种:RENDERMODE_CONTINUOUSLY和RENDERMODE_WHEN_DIRTY。
ß默认渲染方式为RENDERMODE_CONTINUOUSLY,当设置为RENDERMODE_CONTINUOUSLY时渲染器会不停地渲染场景,当设置为RENDERMODE_WHEN_DIRTY时只有在创建和调用requestRender()时才会刷新。
一般设置为RENDERMODE_WHEN_DIRTY方式,这样不会让CPU一直处于高速运转状态,提高手机电池使用时间和软件整体性能。
GLSurfaceView源码解析
在分析GLSurfaceView源码之前我们非常有必要介绍一下GLSurfaceView的使用方法:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 麦溪·在路上!
评论
ValineDisqus