一.OpenGL ES
OpenGL 体系简单,具有跨平台的特性.适用于大型图形工作站也适用于个人PC
由于OpenGL在三维图形计算时必须处理大量的数据,因此在一些如手机之类的小型设备上运行比较困难,
OpenGL ES是OpenGL的子集,是免费的,跨平台的,功能完善的2D/3D图形库接口API,针对多种嵌入式系统(控制台,移动电话,手持设备,家电设备和汽车)专门设计.
OpenGL ES 1.x 针对固定管线硬件,OpenGL ES 2.x 针对可编程管线硬件.
目前Android SDK已支持OpenGL ES 2.O 的绝大部分功能,而且专门为OpenGL 提供了android.opengl包
| 在Android中使用OpenGL ES
| 使用步骤
| 1 创建GLSurfaceView组件,使用Activity显示该组件
| 2 为GLSurfaceView组件创建GLSurfaceView.Renderer实例,并实现该接口中的三个方法
| abstract void onDrawFrame(GL1O gl) Renderer对象调用该方法绘制GLSurfaceView的当前帧
| 通常开始 gl.glClear(GL1O.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
| abstract void onSurfaceChanged(GL10 gl,int width,int height) 当GLSurfaceView的大小改变时回调该方法
| abstract void onSurfaceChanged(GL10 gl,EGLConfig config) 当GLSurfaceView被创建时回调该方法
| 3 调用GLSurfaceView组件的setRenderer()方法指定Renderer对象,该对象会完成GLSurfaceView里3D图形的绘制
| 使用方法
| glDisable(int cap) 禁止OpenGL ES 某些方面的特性
| glHint(int target,int mode) 该方法用于对OpenGL ES 某些方面进行修正
| clearColor(float red,float green,float blue,float alpha) 该方法设置OpenGL"清屏"所用的颜色
| glShadeModel(int mode) 设置OpenGL ES的阴影模式
| glEnable(int cap) 该方法与glDisable(int cap)方法相对,用于启用OpenGL某些方面的特性
| GL10.GL_TEXTURE_2D 启用2D纹理贴图
| glGenTextures(int n,int[] textures,int offset) 指定一次性生成N个纹理,生成的纹理的代号放入textures数组中,指定从数组第offset个元素开始存放
| glBindTexture(int target,int texture) 将texture纹理绑定到target目标上
| glTexParameterf(int target,int pnmae,float param) 为target纹理目标设置属性,pnmae为属性名,param为属性值
|
| glViewport(int x,int y,int width,int height) 设置3D视窗的位置与大小
| glMatrixMode(int mode) 设置视图的矩阵模型(GL10.GL_PROJECTION,GL10.GL_MODELVIEW)
| GL10.GL_PROJECTION 设置屏幕为透视,看到逼真的3D这是必须的
| GL10.GL_MODELVIEW 将当前矩阵模式设为视图矩阵,任何新的变化都会影响该矩阵中的所有物体
| glLoadldentity() 相当于reset()方法,用于初始化单位矩阵
| glFrustumf(float left,float right,float bottom,float top,float zNear,float zFar) 用于设置透视投影空间的大小
| glEnableClientState(GL10.GL_VERTEX_ARRAY) 启用定点坐标数组
| glEnableClientState(GL10.GL_COLOR_ARRAY) 启用定点颜色数组
| glVertxtPointer(int size,int type,int stride,Buffer pointer) 设置顶点位置数据
| glColorPointer(int size,int type,int stride,Buffer pointer) 设置订顶点的颜色数据
| glDrawArrays(int mode,int first,int count) 绘制平面
| mode GL10.GL_TRIANGLES 绘制三角形 GL10.GL_TRIANGLES_STRIP
| glFinish() 结束绘制
OpenGL 体系简单,具有跨平台的特性.适用于大型图形工作站也适用于个人PC
由于OpenGL在三维图形计算时必须处理大量的数据,因此在一些如手机之类的小型设备上运行比较困难,
OpenGL ES是OpenGL的子集,是免费的,跨平台的,功能完善的2D/3D图形库接口API,针对多种嵌入式系统(控制台,移动电话,手持设备,家电设备和汽车)专门设计.
OpenGL ES 1.x 针对固定管线硬件,OpenGL ES 2.x 针对可编程管线硬件.
目前Android SDK已支持OpenGL ES 2.O 的绝大部分功能,而且专门为OpenGL 提供了android.opengl包
| 在Android中使用OpenGL ES
| 使用步骤
| 1 创建GLSurfaceView组件,使用Activity显示该组件
| 2 为GLSurfaceView组件创建GLSurfaceView.Renderer实例,并实现该接口中的三个方法
| abstract void onDrawFrame(GL1O gl) Renderer对象调用该方法绘制GLSurfaceView的当前帧
| 通常开始 gl.glClear(GL1O.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
| abstract void onSurfaceChanged(GL10 gl,int width,int height) 当GLSurfaceView的大小改变时回调该方法
| abstract void onSurfaceChanged(GL10 gl,EGLConfig config) 当GLSurfaceView被创建时回调该方法
| 3 调用GLSurfaceView组件的setRenderer()方法指定Renderer对象,该对象会完成GLSurfaceView里3D图形的绘制
| 使用方法
| glDisable(int cap) 禁止OpenGL ES 某些方面的特性
| glHint(int target,int mode) 该方法用于对OpenGL ES 某些方面进行修正
| clearColor(float red,float green,float blue,float alpha) 该方法设置OpenGL"清屏"所用的颜色
| glShadeModel(int mode) 设置OpenGL ES的阴影模式
| glEnable(int cap) 该方法与glDisable(int cap)方法相对,用于启用OpenGL某些方面的特性
| GL10.GL_TEXTURE_2D 启用2D纹理贴图
| glGenTextures(int n,int[] textures,int offset) 指定一次性生成N个纹理,生成的纹理的代号放入textures数组中,指定从数组第offset个元素开始存放
| glBindTexture(int target,int texture) 将texture纹理绑定到target目标上
| glTexParameterf(int target,int pnmae,float param) 为target纹理目标设置属性,pnmae为属性名,param为属性值
|
| glViewport(int x,int y,int width,int height) 设置3D视窗的位置与大小
| glMatrixMode(int mode) 设置视图的矩阵模型(GL10.GL_PROJECTION,GL10.GL_MODELVIEW)
| GL10.GL_PROJECTION 设置屏幕为透视,看到逼真的3D这是必须的
| GL10.GL_MODELVIEW 将当前矩阵模式设为视图矩阵,任何新的变化都会影响该矩阵中的所有物体
| glLoadldentity() 相当于reset()方法,用于初始化单位矩阵
| glFrustumf(float left,float right,float bottom,float top,float zNear,float zFar) 用于设置透视投影空间的大小
| glEnableClientState(GL10.GL_VERTEX_ARRAY) 启用定点坐标数组
| glEnableClientState(GL10.GL_COLOR_ARRAY) 启用定点颜色数组
| glVertxtPointer(int size,int type,int stride,Buffer pointer) 设置顶点位置数据
| glColorPointer(int size,int type,int stride,Buffer pointer) 设置订顶点的颜色数据
| glDrawArrays(int mode,int first,int count) 绘制平面
| mode GL10.GL_TRIANGLES 绘制三角形 GL10.GL_TRIANGLES_STRIP
| glFinish() 结束绘制