OpenGL三维绘图学习3键盘监听

Pre

不深入了解,只说明满足实验要求的。

实验中要求按钮对应事件是旋转和前进后退。

代码

static GLfloat spin=0.0;
static GLfloat movtion=0.0;
static void key(unsigned char key, int x, int y)
{
    switch (key)
    {
    case 27 :
    case 'q':
        exit(0);
        break; //按ESC键(ASCII码为27)和q键为退出
    case 'a':
            spin>360?spin-=360:spin+=2;
                glutPostRedisplay();
        break;
    case 'd':
            spin<0?spin+=360:spin-=2;
                glutPostRedisplay();
        break;
    case 'w':
        movtion=movtion>8?movtion-=8:movtion+=0.2;
        glutPostRedisplay();                //标记当前窗口需要重绘,否则不会旋转
        break;
    case 's':
        movtion=movtion<0?movtion+=8:movtion-=0.2;
        glutPostRedisplay();                //标记当前窗口需要重绘,否则不会旋转
        break;
}

spin是旋转量,

movtion是移动量.

则在display中,相应的旋转和移动函数即可

 //交互
    //旋转一定的角度
    glRotatef(spin,0,0,1);
    glTranslatef(0.0, movtion, 0.0);

注意main中glutKeyboardFunc(key);绑定监听函数。

opengl三维绘图入门系列:

OpenGL三维绘图学习1入门
OPENGL三维绘图学习2画常见立体图形
OPENGL三维绘图学习3键盘监听
OPENGL三维绘图学习4裁剪(画半球体)

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/easycoding/1215

你可能喜欢:(相似内容推荐和广告都使用了谷歌的推荐系统,需要对本站取消广告屏蔽才能显示。感谢点击↓广告支持博主~)

Find

新浪微博(FindHaoX86)QQ群:不安分的Coder(375670127) 不安分的Coder

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*