GLSurfaceView 和 GLSurfaceView.Renderer,前者在Activity里实例化用来setContentView,后者在前者构造时实例化用来setRenderer, getApplication()用来做context,都set完以后,就等着这两个实例的事件函数被Android系统之后执行的代码调用(所以这两个类应该继承使用,以重载事件响应函数)。
GLSurfaceView可以捕获触摸屏事件,而GLSurfaceView.Renderer则需要实现onSurfaceCreated、onDrawFrame、onSurfaceChanged三个函数。
onSurfaceCreated,在GLSurfaceView创建时被调用一次,所以里面可以放只执行一次的代码,例如设置环境变量或初始化图形对象; onDrawFrame,在每一次GLSurfaceView redraw的时候被调用,这个函数是主要的绘图代码执行点; onSurfaceChanged,在GLSurfaceView size改变或设备屏幕方向变化时被调用,例如从横拿手机变成竖着拿。应该在这个函数里调整绘图的内容。
OpenGL APIs,javax.microedition.khronos.opengles包提供标准的OpenGL ES 1.0/1.1实现; android.opengl包提供OpenGL ES 1.0/1.1更高性能的实现; android.opengl.GLES20提供OpenGL ES 2.0接口,需要API Level 8以上。
在AndroidManifest.xml文件里声明应用程序对OpenGL版本和材质压缩格式的需求。