snowman

GLUT Tutorials 8: GLUT高级键盘控制

与世无争的帅哥 提交于 2020-08-13 02:09:45
博客转自: https://www.cnblogs.com/yangxi/archive/2011/09/16/2178497.html 这一节里,我们再来看看上次的例子,这次我们讲使用高级的键盘控制。在初始化那部分,我们有两个变量:deltaAngle和deltaMode。这些变量控制旋转和移动照相机。当为非0时,照相机执行一些动作,当为0时,照相机就不动,这两个变量的初始值是0,也就是说,照相机初始状态是不动的。 #include <math.h> #include <GL/glut.h> float angle= 0.0 ,deltaAngle = 0.0 ,ratio; float x= 0.0f ,y= 1.75f ,z= 5.0f ; float lx= 0.0f ,ly= 0.0f ,lz=- 1.0f ; GLint snowman_display_list; int deltaMove = 0 ; void reShape( int w, int h) { // Prevent a divide by zero, when window is too short // (you cant make a window of zero width). if (h == 0 ) h = 1 ; ratio = 1.0f * w / h; // 重置投影矩阵

GLUT Tutorials 6: GLUT场景漫游

佐手、 提交于 2020-08-12 17:07:30
博客转自:http://blog.csdn.net/xie_zi/article/details/1911997 让我们看一个比较好的使用键盘控制的例子。这一章我们将建立一个应用程序。这个程序绘制了一个小的居住着雪人的世界。并且我们将用方向键来移动照相机(即移动视点在场景中漫游)。左右方向键,将照相机绕y轴旋转,上下方向键,将前后方向移动照相机。 这个例子的代码放在下面。首先我们处理初始状态。 #include <math.h> #include <GL/glut.h> #include <stdlib.h> static float angle= 0.0 ,ratio; static float x= 0.0f ,y= 1.75f ,z= 5.0f ; static float lx= 0.0f ,ly= 0.0f ,lz=- 1.0f ; static GLint snowman_display_list; 注意我们包含了math.h头文件。我们需要计算旋转角。上面变量的含义到后面你就会清楚了,但我们还是简单的描述下: 1:angle:绕y轴的旋转角,这个变量允许我们旋转照相机。 2:x,y,z:照相机位置。 3:lx,ly,lz:一个向量用来指示我们的视线方向。 4:ratio:窗口宽高比(width/height)。 5:snowman_display_list