Android OpenGL ES 入门系列(一) --- 了解OpenGL ES的前世今生

 

转载请注明出处

本文出自Hansion的博客

OpenGL ES (OpenGL for Embedded Systems)

        是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,主要用来开发3D图形应用

 

Android支持以下几个版本的OpenGL ES API:

        OpenGL ES 1.0和1.1      支持Android 1.0及更高版本

        OpenGL ES 2.0               支持Android 2.2(API级别8)及更高版本

        OpenGL ES 3.0               支持Android 4.3(API级别18)及更高版本

        OpenGL ES 3.1               支持Android 5.1(API级别21)及更高版本

注意不要将OpenGL ES 1.x API调用与OpenGL ES 2.0方法混合使用,因为其API不可互换。

 

 

在Android框架中有两个基础类:GLSurfaceView和GLSurfaceView.Renderer,它们允许您使用OpenGL ES API创建和操作图形。

GLSurfaceView:

        是一个可以使用OpenGL API调用来绘制和操作对象的View,功能上类似于SurfaceView。

        可以通过创建一个GLSurfaceView的实例并添加渲染器来使用它。

GLSurfaceView.Renderer:

        该接口定义了在GLSurfaceView中绘制图形所需的方法。

        必须提供单独的类实现此接口,并使用GLSurfaceView.setRenderer()将其附加到GLSurfaceView实例。

        它必须实现以下几个方法:

                onSurfaceCreated(): 系统会在创建GLSurfaceView时调用一次该方法。我们在此方法中做一些只需执行一次的操作,如设置OpenGL环境参数或初始化OpenGL图形对象。

                onDrawFrame(): 系统在每次重绘GLSurfaceView时调用此方法。此方法用于绘制(和重新绘制)图形对象。

                onSurfaceChanged(): 当GLSurfaceView的大小或设备屏幕方向发生变化时,系统调用此方法。例如,当设备从纵向变为横向时,系统调用此方法。

 

在Android上Opengl是通过Vertex Shader (定点着色器)和 Fragment Shader (片段着色器)这两种定点着色器程序来实现图片的加载和渲染的

顶点着色器的作用是为每一个顶点生成坐标,因此每个顶点都要运行一遍顶点着色器程序,一旦顶点坐标计算出来之后,OpenGL就能够使用这些顶点来组成点,线,和三角形。所有任意的图形都是由这三种基本元素来描述的。

片段着色器的作用是为点,线或者三角形的每一个顶点的片段(Fragment)生成渲染后的最终颜色。片段就是一个小的单色矩形区域,可以简单的认为是屏幕上的一个像素点。

 

OpenGL坐标原点在屏幕中央,左右坐标范围为[-1,1]

 

 

参考:

 OpenGL ES官方资料

posted @ 2018-01-04 11:37  Hansion  阅读(934)  评论(0编辑  收藏  举报