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

【OpenGL】nehe教程第四、五课学习笔记

2017-03-23 21:35 274 查看
nehe的第四课主要讲了旋转glrotatef函数,

glrotatef函数是用来旋转坐标系的,一共有四个参数,第一个是旋转角度,第2-4个分别是x、y、z轴。

角度是按照360一周来计算的,正值的话如果是从各个轴正方向看去(方向与负方向一致)是逆时针旋转。

各个轴参数只能是两个值,0或者1,其他非0的数也会按照1来处理,比如glrotatef(45,0.0f,0.0f,1.0f)会使坐标轴z旋转45.

所以glrotatef函数有局限性,如果想让三个轴旋转不同角度,需要写三次函数。

同时经过测试,如果要产生动态旋转,需要将角度用变量表示,每次加上0.1便有不慢的旋转速度,猜测opengl应该是每帧会调用一次DrawGLScene,类似unity的update函数。

如果将glrotatef放在gltranslate前面,则会发生物体绕一个位置旋转的情况,将不再是自身旋转。



这是测试角度不为0和1的测试图,结果一致。



这是glrotatef在gltranslate前面的情况,类似于行星绕太阳旋转

第四课的主要内容是搭建一个三维的金字塔,跟以前的课比,主要是我们要在z轴上动动手脚啦。

笔者遇到的一个问题是一个GL_POLYGON内无法封底。nehe在教程中作为彩蛋留下的,好吧,我是用另一个GL_POLYGON封的底。

在这个过程,我发现一个诡异的过程,POLYGON第一个点至关重要,它会跟所有其他的点连在一起,也就是说GL_POLYGON构成的面,是由第一个点,和两个临近的点完成的。而nehe的代码中,每一个面点都重复是没有用的,笔者讲其他的顶部红点去掉后,展示的效果是一样的。

正方体就不说了,QUADS能封面





如果有哪位大神做出了不一样的结论,恳请能在底部留言,教我一下怎么做的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息