Android中的OpenGL ES简介
发布日期:2021-06-30 16:01:00 浏览次数:2 分类:技术文章

本文共 1499 字,大约阅读时间需要 4 分钟。

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版本上则很难达到。

转载地址:https://kaitiren.blog.csdn.net/article/details/8537040 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:程序员性格怪癖是才华横溢的表现还是危险分子
下一篇:cocos2d-x如何优化内存的应用

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月17日 04时24分22秒