自学计算机图形学OpenGL(三)keyBoard键盘交互

通过键盘的w、s、a、d键控制图形上下左右移动。

#include<GL/glut.h>

int xd = 0, yd = 0;
void myDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT);//清除当前被激活为写操作的颜色缓存
    glColor3f(0.8, 0.5, 0.6);
    glPointSize(5);
    glBegin(GL_POLYGON);//绘制多边形
    glVertex2i(10 + xd, 10 + yd);
    glVertex2i(20 + xd, 10 + yd);
    glVertex2i(20 + xd, 0 + yd);
    glVertex2i(10 + xd, 0 + yd);
    glEnd();
    glFlush();//将缓存推送到屏幕上
}

void myKeyBorad(unsigned char key, int x, int y)
{
    switch (key)
    {
    case 'w':yd++; break;
    case 's':yd--; break;
    case 'a':xd--; break;
    case 'd':xd++; break;
    }
    glutPostRedisplay();//重新执行display方法
}

void init()
{
    glClearColor(1.0, 1.0, 1.0, 0.0);//设置窗口背景色
    glMatrixMode(GL_PROJECTION);//设置为正投影模式
    glLoadIdentity();//类似复位操作
    gluOrtho2D(-20, 30, -20, 30);//设置投影范围
}

void main(int argc,char*argv[])
{
    glutInit(&argc, argv);//初始化
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);//设置为rgb且单缓冲区
    glutInitWindowPosition(300, 100);//设置窗口的位置
    glutInitWindowSize(600, 500);//设置窗口的大小
    glutCreateWindow("key interaction");//窗口上方的文字

    init();//初始化函数
    glutDisplayFunc(myDisplay);//回调函数
    glutKeyboardFunc(myKeyBorad);//交互函数
    glutMainLoop();
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值