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的资源。
事件处理:
为了处理事件,一般都是继承GLSurfaceView类并重载它的事件方法。但是由于GLSurfaceView是多线程操作,所以需要一些特殊的处理。由于渲染器在独立的渲染线程里,你应该使用

GLSurfaceView是Android中用于3D游戏开发的视图组件,它在独立线程中由渲染器进行内容渲染,提供更快的界面更新速度。相比View,GLSurfaceView更适用于高性能需求的场景,如2D游戏。事件处理和实例应用方面,GLSurfaceView能够与MediaPlayer结合显示视频图像,并且与View和SurfaceView主要区别在于更新画面的方式和线程管理。
最低0.47元/天 解锁文章
840

被折叠的 条评论
为什么被折叠?



