转载请注明出处
本文出自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]
参考: