一些关于opengl的记忆

来源:互联网 发布:在哪里下载mac软件 编辑:程序博客网 时间:2024/06/11 06:23

之前在高星的带动下做过一些opengl,后来和他一起做了模型细化之后就没继续下去了。上次徐学鹏回来又聊起了opengl,他说4.0版本变化很大,我还问高星来着,高星说也不是,一次性传递给gpu在4.0以前的版本就可以做了。

  Anyway,我不能在这样堕下去了,高星原来都不怎么做软件的,·去美国没几个月就进步这么多,徐学鹏就更别提了,加拿大的开放学习环境和丰富的学习资源完全让他如鱼得水。我再继续原地踏步以后都没脸见他们了。

  还好,毕业设计选了android平台信息收集,相比windows,是个新东西了,终于又唤起我学习的兴趣。之前大概熟悉了下android的开发环境,做了几个tutorial,都不是那么得心应手,想了下,还是做图像吧,这个我更感兴趣些。于是就开始在android上写opengl。

android的环境配置就不说了,比较简单,而且我喜欢拿着我的htc实机测试。opengl的配置就更简单了,我用的android 2.3,完全支持opengl,甚至不需要像windows里面配套一个glut.dll,引入两个包就好了:

import android.opengl.GLU;import android.opengl.GLSurfaceView.Renderer;

 然后是几个我经常混淆的函数,首先是gl.glViewport(0, 0, w, h);会英语的都知道是设置视口的,但是TM的什么是视口我老是搞忘。记一下,其实就是窗口。

接着是一个常用的流程,先用gl.glMatrixMode()设置欲操作的矩阵。引用红苹果的一段话:

OpenGL里面的操作,很多是基于对矩阵的操作的,比如位移,旋转,缩放,所以,这里其实说的规范一点就是glMatrixMode是用来指定哪一个矩阵是当前矩阵,而它的参数代表要操作的目标,GL_PROJECTION是对投影矩阵操作,GL_MODELVIEW是对模型视景矩阵操作,GL_TEXTURE是对纹理矩阵进行随后的操作。

   设置完以后,一般要重置矩阵:gl.glLoadIdentity();

   完了以后就可以实施实际的操作,比如,之前是

gl.glMatrixMode(GL10.GL_PROJECTION);

 对投影矩阵进行操作的。那么,接下来,可以设置透视:

gl.glLoadIdentity();GLU.gluPerspective(gl, 45.0f, ((float) w) / h, 0.1f, 10f);

如果参数是GL_MODELVIEW,则可以用glulookat()。

 

  另外备注下gluPerspective()的功能,gluPerspective specifies a viewing frustum into the world coordinate system. 其实说的很好,就是个锥台,百科里面有这个图。

  最后是glOrtho()。Ortho是正交的意思,我理解就是垂直的分割,而不像gluPerspective()那样的锥形,这个以后实验多了再看。

  好吧,opengl的东西先复习这么多。

格式被我搞乱了。。。可是不知道怎么改回来,只能凑合了