Android中的OpenGL ES简介

OpenGL ES软件层次栈,本章介绍了Android系统中OpenGL ES的调用层次栈,详细分析了库之间如何通过钩子(hook)实现API调用关联,让我们明白各个库之间的依赖关系。本节为Android中的OpenGL ES简介。

Android中的OpenGL ES简介

Android支持使用OpenGL(Open Graphics Library)API进行2D和3D图形的绘制 ,尤其使用OpenGL ES(Embedded System) API。OpenGL是一个跨平台的图形API规范,它为3D图形处理硬件定义了一套标准的软件接口。OpenGL ES是在OpenGL API的基础上专为嵌入式设备选取的一套API规范。自早期的版本Android 1.0就开始支持OpenGL ES 1.0和1.1规范,自Android 2.2版本开始支持OpenGL ES 2.0规范。Android提供的OpenGL ES API类似于J2ME JSR239标准,但不同。

我们既可通过Android Framework中提供的API,也可以通过Native层(Native Development Kit ,NDK)的API去使用OpenGL。开发者可以使用Framework中两个基本的类GLSurfaceView和GLSurfaceView。Renderer在Android应用程序中进行图形绘制操作,也就是在Renderer中使用OpenGL API在GLSurfaceView上进行绘制,具体如何使用它们,详见官方文档 、 。

在使用GLSurfaceView和GLSurfaceView.Renderer进行绘制时,可以使用下面这些OpenGL ES API包。

(1)包javax.microedition.khronos.opengles提供OpenGL ES 1.0/1.1标准实现,可以使用的API类包括:GL10、 GL10Ext、 GL11、 GL11Ext和GL11ExtensionPack。

(2)包android.opengl,提供了一套静态函数接口,包括OpenGL ES 1.0/1.1和2.0,其性能优于包javax.microedition.khronos.opengles。支持OpenGL ES 1.0/1.1的类包括:GLES10、 GLES10Ext、 GLES11和GLES10Ext;支持OpenGL ES 2.0的API类是:android.opengl.GLES20 (自Android 2.2开始)。

由于Android支持OpenGL ES 1.0/1.1、2.0,且由于二者有显著差异。那么该选择哪个版本呢?在本节参考的Google文档里的"Choosing an OpenGL API Version"部分列出了四项因素,介绍如下。

(1)性能 :通常,OpenGL ES 2.0能比ES 1.0/1.1提供较快的性能。但是,这最终依赖于Android设备,不同的设备平台OpenGL的实现不同。

(2)设备兼容性:开发者开发的应用程序需要考虑Android设备类型,不同的Android版本对OpenGL版本支持不同,如OpenGL ES 2.0自Android 2.2才开始支持。

(3)编码便利性:OpenGL ES 1.0/1.1 API编程较为方便,2.0版本相对复杂些。

(4)图形控制:通过使用shaders,OpenGL ES 2.0对图形绘制能提供较多的控制,可以创建更好的效果,在1.0/1.1版本上则很难达到。


已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值