您的位置:首页 > 运维架构

Opengl学习笔记1 -- 做一个透视立方体

2016-03-11 21:45 225 查看
截图如下:





第一个难度较低,第二个任务则包含更多的代码学习,所以在这里将hw2-2中的相关代码解释一遍:
http://www.cnblogs.com/graphics/archive/2012/07/25/2582119.html,这是解释透视原理的博客,在学习代码前首先一定要先搞清楚基础的原理是什么,这样才能理解代码中的相关参数。
glClearColor(1.0,1.0,1.0,0.0)
;这四个参数分别的 RGBA,范围是0.0f到1.0f,这个方法设置了用于清除的颜色是什么,而
glClear(GL_COLOR_BUFFER_BIT)
函数则执行了清除。

gluLookAt(x0,y0,z0,xref,yref,zref,Vx,Vy,Vz);
这个函数设置摄像机的位置,角度等属性。参数中 前3个为 摄像机坐标系的原点,中间3个是 摄像机的视点,而最后的则是 摄像机的向上向量(就是规定摄像机哪里是向上的,也就是摄像机角度);

glMatrixMode()
函数的参数,这个函数其实就是对接下来要做什么进行一下声明,也就是在要做下一步之前告诉计算机我要对“什么”进行操作了,这个“什么”在glMatrixMode的“()”里的选项(参数)有3种模式: GL_PROJECTION 投影, GL_MODELVIEW 模型视图, GL_TEXTURE 纹理.

这个函数表示模型在各轴上是如果进行缩放的。举个例子:
glScalef (1.0, 2.0, 1.0);//表示y坐标值扩大两倍,这样原本方的物体就变成长的了。
注意是 针对模型的

glRotatef(45.0, 0.0, 1.0, 1.0);
旋转变换同上理,第一个参数是旋转角度,后面三个参数则代表一个向量

glFrustum(... )
是opengl类库中的函数,它是将当前矩阵与一个透视矩阵相乘,把当前矩阵转变成透视矩阵,在使用它之前,通常会先调用glMatrixMode(GL_PROJECTION).

即是该函数构造了一个视景体用来将模型进行投影,来裁剪模型,决定模型哪些在视景体里面,哪些在视景体的外面,在视景体之外的就不可见。

glLoadIdentity()
,恢复初始坐标系

glutSolidCube (1.0);
创建单位立方体,1表示一个单位的

glutWireCube (1.0);
创建立方体边线,1表示一个单位的

glFlush()
就是强制刷新

glutDisplayFunc (displayFcn);
注册一个绘图函数

glutReshapeFunc()
当改变窗口大小的时候的回调函数

总结:

在了解了代码之后发现绘图的过程其实和 canvas 一类的还是有相似之处的,而且可以明显感觉到并不是面向对象而是面向过程的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: