`
seya
  • 浏览: 361974 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

OpenGL ES学习阶段性总结

阅读更多
这几天看了OpenGL ES的相关资料和代码,总结了一些经验。
1. 要画图,得设定画的是什么图形,是点,直线还是三角形,通过gl.glDrawArrays( p1, 0, p2);中的p1来设定。可用的参数有GL10.GL_POINTS, GL10.GL_LINES, GL10.GL_TRIANGLES, GL10.GL_TRANGLES_FAN, GL10.GL_TRIANGLE_STRIP...

2. 知道了形状,要设定数据源,也就是要画的点有哪些。通过gl.glVertexPointer(3, GL10.GL_FIXED, 0, vertexBuff );来设定。vertexBuff就是你想要画的哪些点。它表示为一个一维矩阵,但实际上根据你要画的形状来分成多个部分的。比如你想一个三角形。那么这个矩阵就可以表示为{-1,0,1,0,0,2},{-1,0}表示第一个点,{1,0}表示第二个点,{0,2}表示第三个点。如果之后还有的话,也应该是6*N个数字,以确定更多的三角形坐标。

3. 要是gl.glDrawArrays()方法起作用,之前得调用gl.glEnableClientState(int p1); p1表示要激活的数组的种类,比如要gl.glVertexPointer()设置vertex,那么必须先调用gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);要用数组设置颜色,先调用gl.glEnableClientState( GL10.GL_COLOR_ARRAY );

4. 画三维图像时,要激活深度测试。gl.glEnable( GL10.GL_DEPTH_TEST );

5. 使用texture之前必须先调用gl.glEnable( GL10.GL_TEXTURE_2D );同时调用gl.glEnableClientState( GL10.GL_TEXTURE_COORD_ARRAY );来激活texture数组画图。
6. glLoadIdentity():另当前绘图坐标系从新回到世界坐标系的位置,另他们重合。
  glTranslatef(x,y,z):使绘图坐标系相对世界坐标系沿x,y,z轴移动x,y,z个单位。
  glVertex3f(x,y,z):在当前绘图坐标系绘制一个点
  glColor3f(r,g,b):设置以后绘图函数的绘图颜色,如果没有再次碰到glColor3f(),以后任何绘图函数绘制出的图形颜色都是这个颜色。r,g,b的范围从0.0-1.0。r-蓝色,g-绿色,b-蓝色,色彩是这三种颜色分量的混合,比如glColor3f(1.0,1.0,0.0)是黄色,glColor3f(1.0,0.0,0.0)是红色。
  glRotatef(angle,x,y,z):和glTranslatef()属于一类函数,glTranslatef()是平移,glRotatef是旋转,就是使当前绘图坐标系绕世界坐标系的x,y,z旋转angle个角度,x,y,z的值非0既1,比如glRotatef(30,1.0f,0.0f,0.0f)就是绕x轴旋转30度,glRotatef(30,1.0f,1.0f,0.0f)就是绕x,y的夹角线旋转30度。

7. 用glRotatef能是对象本身围绕一个向量旋转,我们也可以改变观测镜头本身,参考点和向上向量来改变所看到的对象,能产生glRotatef同样的旋转效果。
GLU.gluLookAt(gl,
0.0f, 0.0f, 3.0f,//观测点在屏幕正中向外3.0f单位距离的地方
viewX, 0.0f, 0.0f, //参考点在屏幕中间水平位置viewX
0.0f, 1.0f, 0.0f );//表示Y轴向上
综合这三个点,表示你这个人的眼睛从屏幕正中向外的3.0单位距离的地方,拿着摄像机瞄准viewX的地方再看,看的时候你的头是向上的(如果设置成1.0f, 0.0f, 0.0f,那么表示你的头得向右歪过来,成水平来看)。

1
0
分享到:
评论

相关推荐

    OpenGL ES 学习demo

    总结来说,这个“OpenGL ES 学习demo”是一个很好的起点,涵盖了基本的图形元素绘制,以及可能涉及的文本渲染问题。通过逐步学习和实践,你可以深入了解OpenGL ES的工作原理,提升你的图形编程能力。

    OPENGL ES 3.0编程指南.pdf

    纹理方面,OpenGL ES 3.0增加了对浮点纹理、多层立方体纹理和3D纹理的支持,极大地丰富了纹理处理的灵活性。纹理阵列和纹理缓冲对象(Texture Buffer Object, TBO)的加入,让开发者能够以更灵活的方式存储和访问...

    OpenGL ES规范电子书.pdf

    1. **渲染管线**:OpenGL ES的渲染管线包括顶点处理、图元组装、片段处理等多个阶段,这些阶段共同完成了从模型数据到屏幕像素的转换过程。 2. **着色器**:OpenGL ES支持使用着色语言(如GLSL)编写顶点着色器和...

    opengl es 1.1版本

    在开发过程中,需要注意跨平台兼容性,因为不同的设备可能支持不同的OpenGL ES版本和扩展。 总的来说,OpenGL ES 1.1是移动和嵌入式设备3D图形编程的基础,虽然现在已经被更现代的OpenGL ES 2.0和3.0所取代,但对于...

    opengl es win32模拟器(63位也适用)

    此外,理解OpenGL ES的编程模型,如管线工作流程、固定功能与可编程阶段的区别也是必要的。同时,熟悉GLSL(OpenGL Shading Language)以便编写着色器程序,是实现复杂图形效果的关键。 总之,"opengl es win32...

    OpenGL ES API CHM

    OpenGL ES API CHM文件包含的详细信息可能还包括错误码、常量定义、函数参数说明、示例代码等,对于开发者来说是学习和开发的重要参考资料。通过此CHM文件,开发者不仅可以了解各个函数的用途和用法,还能深入理解...

    OpenGL ES Game Development.2004.pdf

    2002 年,Symbian 组织了一次行业会议,在这次会议上决定采用尚处于初级阶段的 OpenGL ES 作为手机图形 API 的标准。这一决定极大地加速了 OpenGL ES 的发展,并为其提供了强大的商业动力。 **6. OpenGL ES 1.0 和 ...

    OpenGLES Spec

    9. **兼容性和互操作性**:这部分探讨了OpenGLES与其他图形API之间的兼容性和互操作性问题,特别是与OpenGL之间的关系。 #### 四、关键技术点 1. **着色器语言**:OpenGLES采用了OpenGL Shading Language (GLSL),...

    OpenGL_ES 实例源代码

    2. **固定功能管线**:OpenGL ES 1.1使用固定功能管线处理图形,包括顶点处理、光照计算、纹理映射等步骤,开发者需要理解这些阶段的工作原理。 3. **顶点数组**:如何组织和提交顶点数据,包括顶点位置、法线向量...

    opengl es specification 1.5 and 2.0

    OpenGL ES(OpenGL for Embedded Systems)是OpenGL的一个精简版本,专为嵌入式设备,特别是移动设备如智能手机和...在学习和使用OpenGL ES时,应熟悉其规范,理解着色器语言,以及如何有效地利用图形管道来优化性能。

    嵌入式opengles的头文件和lib和dll

    嵌入式OpenGLES,全称为OpenGL for Embedded Systems,是OpenGL的一个子集,专为嵌入式设备如智能手机、平板电脑、智能电视等设计,用于处理2D和3D图形渲染。OpenGLES提供了标准接口,让开发者可以跨平台地编写图形...

    OpenGLES1.1的头文件与DLL

    5. **兼容性问题**:虽然OpenGLES 1.1在wince平台下可用,但在其他平台上可能需要不同的库和头文件。例如,Android使用的是`.so`库文件,iOS则依赖于系统的OpenGL ES框架。因此,跨平台开发时需要处理这些差异。 6....

    opengles 2.0 shading language specification

    在实现OpenGL ES 2.0着色器语言时,开发者需要了解其特定的版本规范和细节,例如语言的变量、类型、运算符、控制结构、函数、着色器输入输出、内置变量以及渲染管线中各个阶段的着色器如何编写和配置。OpenGL ES 2.0...

Global site tag (gtag.js) - Google Analytics