读书人

openGL获取键盘输入的有关问题

发布时间: 2013-10-16 11:29:46 作者: rapoo

openGL获取键盘输入的问题
我想获取键盘输入,方向键和aswd都可以获得同样的效果


void keyEvent(unsigned char key,int x,int y){
switch (key){
case 's':
case GLUT_KEY_DOWN:
printf("down\n");
break;
case 'w':
case GLUT_KEY_UP:
printf("up\n");
break;
case 'a':
//case GLUT_KEY_LEFT:
printf("left\n");
break;
case 'd':
case GLUT_KEY_RIGHT:
printf("right\n");
break;
}
}


现在的问题是只有aswd的情况下没有问题,但是方向键的那个好像没办法获取到。

而且更要命的是GLUT_KEY_LEFT如果取消注释的话,编译提示error C2196: case value '100' already used
就是case 'd': 那行
难道d和GLUT_KEY_LEFT都是100???
是哪里错了不?
[解决办法]
'd'的ASCII码是100,GLUT_KEY_LEFT也是100。
[解决办法]
用unsigned char无法表达所有的按键,可以参考http://blog.csdn.net/gamesdev/article/details/8113155的做法。

引用:
我想获取键盘输入,方向键和aswd都可以获得同样的效果


void keyEvent(unsigned char key,int x,int y){
switch (key){
case 's':
case GLUT_KEY_DOWN:
printf("down\n");
break;
case 'w':
case GLUT_KEY_UP:
printf("up\n");
break;
case 'a':
//case GLUT_KEY_LEFT:
printf("left\n");
break;
case 'd':
case GLUT_KEY_RIGHT:
printf("right\n");
break;
}
}


现在的问题是只有aswd的情况下没有问题,但是方向键的那个好像没办法获取到。

而且更要命的是GLUT_KEY_LEFT如果取消注释的话,编译提示error C2196: case value '100' already used
就是case 'd': 那行
难道d和GLUT_KEY_LEFT都是100???
是哪里错了不?

[解决办法]
搜网络教程“学OpenGL编3D游戏”。

读书人网 >C++

热点推荐