GLSurfaceView
内嵌surface专门负责OpenGL渲染
1、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上
2、能让opengl把内容渲染到上述的surface上
3、用户自定义渲染器(render)
4、让渲染器在独立的线程里运作,和UI线程分离
5、支持按需渲染和连续渲染
GLSurfaceView 就是通过独立的线程,让渲染器把内容渲染到内嵌的surface上
GLSurfaceView的渲染被委托给渲染器在独立的渲染线程里进行
1、初始化GLSurfaceView
初始化过程其实仅需要使用setRenderer(Renderer)设置一个渲染器。当然,也可以修改GLSurfaceView一些默认配置。
setDebugFlags(int)
setEGLConfigChooser(boolean)
setEGLConfigChooser(EGLConfigChooser)
setEGLConfigChooser(int, int, int, int, int, int)
setGLWrapper(GLWrapper)
2、定制android.view.Surface
GLSurfaceView默认会创建像素格式为PixelFormat.RGB_565的surface。如果需要透明效果,调用getHolder().setFormat(PixelFormat.TRANSLUCENT)。透明的surface的像素格式都是32位,每个色彩单元都是8位深度,像素格式是设备相关的,这意味着它可能是ARGB、RGBA或其他。
3、选择EGL配置
在渲染器工作之前就应该指定EGL的配置。GLSurfaceView默认EGL配置的像素格式为RGB_656,16位的深度缓存,默认不开启遮罩缓存。也可以自己定制 使用不同的通道(channel),也可以指定每个通道具有不同数目的位(bits)深度。
4、渲染模式
渲染器设定之后,你可以使用setRendererMode(int) 指定渲染模式是按需还是连续,默认是连续渲染。
注意:
Activity窗口暂停(pause)或恢复(resume)时,GLSurfaceView都会收到通知,此时它的onPause()方法和onResume()方法应该被调用。这样做事为了让GLSurfaceView暂停或恢复它的渲染线程,以便它及时释放或重建OpenGL的资源。