GLSurfaceView
Android平台提供的OpenGL ES API主要定义在包android.opengl ,javax.microedition.khronos.egl ,javax.microedition.khronos.opengles ,java.nio 等几个包中,其中类GLSurfaceView 为这些包中的核心类:
- 起到连接OpenGL ES与Android 的View层次结构之间的桥梁作用。
- 使得Open GL ES库适应于Anndroid系统的Activity生命周期。
- 使得选择合适的Frame buffer像素格式变得容易。
- 创建和管理单独绘图线程以达到平滑动画效果。
- 提供了方便使用的调试工具来跟踪OpenGL ES函数调用以帮助检查错误。
GLSurfaceView 通过调用setRenderer 方法来设置GLSurfaceView.Renderer 。Renderer提供三个统一的接口函数来进行图形绘制:
public void onSurfaceCreated(GL10 gl, EGLConfig config)
public void onDrawFrame(GL10 gl)
public void onSurfaceChanged(GL10 gl, int width, int height)
onSurfaceCreated(GL10 gl, EGLConfig config) 在view创建的时候创建,在函数中需要进行一些初始化的设置。
onDrawFrame(GL10 gl) 在程序中一直不停地调用,在函数中进行绘图操作。
onSurfaceChanged(GL10 gl, int width, int height) 在设备横纵向切换的时候调用,函数中的主要对设备屏幕切换后调整图形绘制的比例。