您的位置:首页 > 移动开发 > Android开发

Android OpenGL ES 开发教程(一)

2016-08-03 17:19 190 查看
最近在用到了OpenGL ES做Android 开发,总结一下学习的历程。

本章将从OpenGL ES的基础讲起。总结有关OpenGL ES的基本常识。

一、轻松入门话题:

OpenGL for Embedded System(OpenGL ES),是一种适用于嵌入式系统的免费2维和3维图形库。反正就是个绘制图形的工具(暂且这么理解吧)。



这张是OpenGL 与 OpenGL ES之间的关系图。因为OpenGL是早就有了的,而ES是可以引用在手机上的版本。

二、OpenGL ES在Android 中的包和重要的类

(一)、集中了大量OpenGL ES对象、方法的包:(了解一下)

1. package android.opengl —->GL辅助,连接Activity View与OpenGL ES

2. package javax.microedition.khronos.egl —->Display、Surface管理包

3. package javax.microedition.khronos.opengles —->绘图指令包

4. javax.nio —->数据存储包,Buffer

说明:这些包中的类,基本上是将C/C++的库(底层绘图方法),封装成了Java类库。其中的方法和底层的方法或者指令有点像。

特点:

1. 常量一般以GL_开头,方法一般以gl开头

2. 方法中大都指定了参数的数据类型,比如方法名结尾为f表示参数需是float,结尾为x表示参数需是int,结尾为v表示图形是矢量图等等。数据类型前有数字,例如4f表示支持4位float

核心类有:

1. javax.microedition.khronos.egl.EGL/EGL10/EGL11/EGL14等等

EGL 是 OpenGL ES与底层Native平台视窗系统之间的接口。



EGL 的产生:OpenGL ES为附加功能和可能的平台特性开发提供了扩展机制,但是这还不够,还必须要有一个可以让OpenGL ES 与本地视窗系统交互且与平台无关的层。OpenGL ES 的本质是一个图形渲染管线(PipeLine)的状态机,而EGL则是用于监控这些状态以及维护FrameBuffer 和其他渲染Surface的外部层

EGL中的重要类:

1>EGLDisplay –> 实际显示设备的抽象

2>EGLSurface –> 存储图像的内存区域FrameBuffer

3>EGLContext –> 存储OpenGL ES 绘图的状态信息

EGL的绘图步骤:

1> EGLDisplay 对象的获取

2> 初始化与EGLDisplay对象的连接

3> 获取EGLConfig对象

4> 创建EGLContext对象

5> 创建EGLSurface对象

6> 建立EGLContext与EGLSurface之间的连接

7> 使用指令集绘制图形

8> 断开EGLSurface与EGLContext之间的连接

9> 销毁EGLContext、EGLSurface对象

10> 断开与EGLDisplay的连接

更多关于EGL:http://www.cnblogs.com/wanqieddy/archive/2011/11/24/2261457.html

2. android.opengl.GLSurfaceView

这个类的作用是:

1) 起到连接OpenGL ES与Android View的作用;

2) 使得OpenGL ES库适应Android Activity的生命周期;

3) 方便选择和合适的FrameBuffer,使得像素数据在Java中使用更方便;

4) 创建和管理单独的线程,使得绘制的效果平滑;

3. android.opengl.GLSurfaceView.Renderer

1) 这是一个统一的图形绘制接口

2) 实现其中的三大方法即可实现图形的绘制。

1> onSurfaceCreate 此方法在创建GLSurfaceView的时候执行。在此方法中主要设置一些不经常变化的参数比如说背景、是否打开z-Buffer等参数

2> onDrawFrame 此方法在绘制当前的Frame时执行。此方法定义一些实际的绘图操作。

3> onSurfaceChanged 此方法在Surface尺寸发生改变时执行。在设备支持横竖切换时,发生横竖屏切换可以进行相关的操作。

——————————不怎么华丽的分割线——————————–

下一章将从基本图形绘制、数据格式与存储进行详细总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opengl es android