OPenGL ES常用API:
glClearColor( 0.f, 0.f, 0.f, 1.f ); // 设置模式窗口的背景颜色,颜色采用的是RGBA值
glViewport( 0, 0, iScreenWidth, iScreenHeight );//设置视口的大小以及位置,
视口:也就是图形最终显示到屏幕的区域,前两个参数是视口的位置,后两个参数是视口的宽和长。
glMatrixMode( GL_PROJECTION ); // 设置矩阵模式为投影矩阵,之后的变换将影响投影矩阵。
OpenGL属于状态管理机制,比如:设置当前矩阵为投影矩阵过后,在没有重新调用glMatrixMode()之前,任何矩阵变换都将影响投影矩阵。
glFrustumf( -1.f, 1.f, -1.f, 1.f, 3.f, 1000.f ); //该函数创建一个透视投影矩阵,其中的参数定义了视景体,可以理解为用相机的时候,眼睛的可视范围。就像一个三棱锥,参数1、3、5和2、4、6分别定义了近裁面和远裁面的左下和右上的(x、y、z)坐标。
OpenGL 投影有两种模式,一种是透视投影,也就是通过上述函数创建一个三棱锥视景体,这种模式下观看三维模型是近大远小。另外一种模式是正交模式,视景体是一个平行六面体,离相机的距离不会影响物体的大小。
glMatrixMode( GL_MODELVIEW ); //设置当前矩阵为模式矩阵
glVertexpointer( 3, GL_BYTE, 0, vertices ); //指定从哪里存取空间坐标数据
OpenGL 一共有8个这样的函数可以存取不同的坐标数据:
glColorPointer();
glIndexPointer();
glNormalPointer();
glTexCoordPointer();等
glShadeModel( GL_FLAT ); //设置阴影模式为GL_FLAT,默认是GL_SMOOTH
阴影模式一共有两种,GL_SMOOTH和GL_FLAT,在有关照的情况下会有不同的效果。
glClear( GL_COLOR_BUFFER_BIT ); //清除颜色缓存
glLoadIdentity(); //设置当前矩阵为单位矩阵
OpenGL里面的位置大小都是用矩阵来表示的,比如:glScanf()放大或缩小,其实就是用一个矩阵去乘当前的矩阵,为了使变换不受当前矩阵的影响,所以把当前矩阵设置为单位矩阵。
glTranslatex(0, 0, -100 << 16 ); //将坐标向z轴负方向移动100
glColor4f( 1.f, 0.f, 0.f, 1.f ); 设置颜色为红色
/* Scale the geometry */
glScalex( 15 << 16, 15 << 16, 15 << 16 ); // 将物体沿xyz者分别放大15倍
/* Draw the triangle */
glDrawElements( GL_TRIANGLES, 1 * 3, GL_UNSIGNED_BYTE, indices ); //绘制图形,GL_TRIANGLES说明要绘制的图形是三角形,3表示一共有三个定点,GL_UNSIGNED_BYTE表示indices存储的数据类型
A call to eglSwapBuffers() can then be made.
void glTranslatef(GLfloat x, GLfloat y, GLfloat z)
void glTranslatex(GLfixed x, GLfixed y, GLfixed z)
功能:沿x、y、z平移
void glScalef(GLfloat x, GLfloat y, GLfloat z)void glScalex(GLfixed x, GLfixed y, GLfixed z)
功能:在x、y、z轴进行缩放,参数x、y、z为你想要的大小。
void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)void glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
功能:沿x、y、z轴进行旋转。Angle表示将要旋转的角度。
void glClear(GLbitfield mask)
功能:用mask清除缓存可以有三种模式进行清除:GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, and GL_STENCIL_BUFFER_BIT.
void glClearDepthf(GLclampf depth)void glClearDepthx(GLclampx depth)
功能:设置深度缓存,参数为0到1,使用glClear清除缓存。3D场景OpenGL程序都使用深度缓存。它的排序决定那个物体先画。这样您就不会将一个圆形后面的正方形画到圆形上来。
void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) void glClearColorx(GLclampx red, GLclampx green, GLclampx blue,GLclampx alpha)
功能:用指定的颜色值(RGBA)清除颜色缓存
void glColorPointer(GLint size, GLenum type, GLsizei stride,const GLvoid * pointer) 功能:指定颜色的存储空间,size在OpenGL ES默认为4,表示(RGBA);type为pointer内容的类型;stride为数据在pointer内存中的偏移量;pointer为第一个元素的地址。
void glEnableClientState(GLenum array)void glDisableClientState(GLenum array) 功能:启用或者禁止array,array有:GL_COLOR_ARRAY, GL_MATRIX_INDEX_ARRAY_OES, GL_NORMAL_ARRAY, GL_POINT_SIZE_ARRAY_ARRAY_OES, GL_TEXTURE_COORD_ARRAY, GL_VERTEX_ARRAY, and GL_WEIGHT_ARRAY_OES。 void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices)
功能:按照参数给定的值绘制图形,mode指定要绘制的类型:GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, and GL_TRIANGLES;count指定要绘制多少个;type指定indices为数组首地址。
转载CSDN:http://blog.csdn.net/yuyang840/archive/2009/11/18/4827426.aspx
分享到:
相关推荐
EGL是OpenGLES渲染API与本地窗口系统之间的桥梁,负责与设备通信、查询和创建图形表面以及同步渲染等。 ### 示例操作步骤 - 创建一个新的项目,并将OpenGL公用类添加到项目中。 - 对于iOS工程,需要将Android相关...
- **OpenGLES图形编程**:学习如何使用OpenGLES API创建和管理顶点数组、纹理坐标、着色器程序以及帧缓冲对象,从而绘制出动态的2D游戏场景。 - **动画与物理引擎**:掌握如何实现角色动画和物理运动,包括跳跃、...
1.8 小结 第2章 设置开发环境 2.1 设置环境 2.1.1 下载JDK 6 2.1.2 下载Eclipse 3.6 2.1.3 下载Android SDK 2.1.4 命令行窗口 2.1.5 安装ADT 2.2 了解基本组件 2.2.1 View 2.2.2 ...
1.8 小结 第2章 设置开发环境 2.1 设置环境 2.1.1 下载JDK 6 2.1.2 下载Eclipse 3.6 2.1.3 下载Android SDK 2.1.4 命令行窗口 2.1.5 安装ADT 2.2 了解基本组件 2.2.1 View 2.2.2 ...
12.4.3 启用OpenGL ES 2.0 API 280 12.4.4 用OpenGL ES渲染来更新AVI Player 280 12.5 使用原生Window API进行渲染 290 12.5.1 启用原生Window API 290 12.5.2 使用原生Window API 291 12.5.3 用原生window渲染...
1.4 小结 11 第2章 OPhone开发环境和流程 12 2.1 安装Eclipse和ODT 12 2.1.1 安装Java SDK 12 2.1.2 安装Eclipse 13 2.1.3 安装OPhone SDK 13 2.1.4 安装和配置ODT插件 14 2.2 第一个OPhone应用程序 16 2.2.1 新建...
1.7 本章小结 33 第2章 Android应用的界面编程 35 2.1 界面编程与视图(View)组件 36 2.1.1 视图组件与容器组件 36 2.1.2 使用XML布局文件控制UI 界面 40 2.1.3 在代码中控制UI界面 41 2.1.4 使用...
- **WebGL**:基于OpenGL ES 2.0的一个JavaScript API,用于渲染2D和3D图形。 - **兼容性问题**:讨论了HTML5游戏在不同浏览器和设备上的兼容性问题及解决方案。 - **特性检测**:通过JavaScript代码检查浏览器...
#### 小结 Cocos2d-x作为一款成熟的开源游戏开发框架,提供了一系列的工具和特性,以支持高效的游戏开发。它的特性集合了易用性、高性能、灵活性、开源支持、社区资源丰富和App Store广泛认可等优点。环境搭建为...
#### 小结 本章节介绍了GUI的概念及其在嵌入式系统中的应用,重点讨论了几种常用的嵌入式GUI系统,包括MiniGUI、Qt/Embedded和Qtopia。这些系统不仅提供了丰富的功能和良好的用户体验,还针对嵌入式系统的特性和...