Opengl学习笔记1 -- 做一个透视立方体
2016-03-11 21:45
225 查看
截图如下:
第一个难度较低,第二个任务则包含更多的代码学习,所以在这里将hw2-2中的相关代码解释一遍:
http://www.cnblogs.com/graphics/archive/2012/07/25/2582119.html,这是解释透视原理的博客,在学习代码前首先一定要先搞清楚基础的原理是什么,这样才能理解代码中的相关参数。
这个函数表示模型在各轴上是如果进行缩放的。举个例子:
即是该函数构造了一个视景体用来将模型进行投影,来裁剪模型,决定模型哪些在视景体里面,哪些在视景体的外面,在视景体之外的就不可见。
第一个难度较低,第二个任务则包含更多的代码学习,所以在这里将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 一类的还是有相似之处的,而且可以明显感觉到并不是面向对象而是面向过程的。相关文章推荐
- Linux之:最常用的20条命令
- VMware安装ubuntu系统(Hadoop集群的节点准备)
- (15) PHP 随笔---LAMP Linux基本操作 对文件、目录的操作
- opencv配置之非配置文件版
- (14) PHP 随笔---LAMP Linux基础
- Linux 字符设备驱动开发基础(二)—— 编写简单 PWM 设备驱动
- centos6、7安装vlc
- nginx 域名映射
- 架构师速成8.2-架构师要懂产品
- 查找两个文件包含的字符串或不包含的字符串shell脚本
- Red Hat Linux 6.5配置本地yum源
- opencv imshow
- CentOS安装Node.js
- Linux Is Not Matrix——扩容的时间
- /etc/init.d/mysql: /usr/bin/my_print_defaults: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
- 突然U盘不可以在32位centos 6.5 挂在了
- poj 2115C Looooops
- POJ C Looooops
- Linux下math库函数编译时未定义的解决办法
- 对于Linux中errno使用的问题