Opengl 如何指定键盘';s方向键在glut中?
我想使用up、down、left、right作为opengl+glut应用程序控件的一部分。如何引用我的“Opengl 如何指定键盘';s方向键在glut中?,opengl,glut,Opengl,Glut,我想使用up、down、left、right作为opengl+glut应用程序控件的一部分。如何引用我的“键盘”函数(我传递给glutKeyboardFunc)中的键 你需要 例如— #include<GL/gl.h> #include<GL/glut.h> #include<stdio.h> void init(void) { /*initialize the x-y co-ordinate*/ glClearColor(0,0,0,0);
键盘
”函数(我传递给glutKeyboardFunc
)中的键 你需要
例如—
#include<GL/gl.h>
#include<GL/glut.h>
#include<stdio.h>
void
init(void)
{
/*initialize the x-y co-ordinate*/
glClearColor(0,0,0,0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-320, 319,-240, 239);
glClear (GL_COLOR_BUFFER_BIT);
glFlush();
}
void
catchKey(int key, int x, int y)
{
if(key == GLUT_KEY_LEFT)
printf("Left key is pressed\n");
else if(key == GLUT_KEY_RIGHT)
printf("Right key is pressed\n");
else if(key == GLUT_KEY_DOWN)
printf("Down key is pressed\n");
else if(key == GLUT_KEY_UP)
printf("Up key is pressed\n");
}
int
main(int argc, char *argv[])
{
double x_0, y_0, x_1, y_1;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(400, 400);
glutCreateWindow("Special key");
init();
glutSpecialFunc(catchKey);
glutMainLoop();
}
#包括
#包括
#包括
无效的
初始(无效)
{
/*初始化x-y坐标*/
glClearColor(0,0,0,0);
glMatrixMode(GL_投影);
glLoadIdentity();
gluOrtho2D(-320319,-240239);
glClear(GLU颜色缓冲位);
glFlush();
}
无效的
catchKey(整数键、整数x、整数y)
{
if(key==GLUT\u key\u LEFT)
printf(“按下左键\n”);
else if(key==GLUT\u key\u RIGHT)
printf(“按下右键\n”);
else if(key==GLUT\u key\u DOWN)
printf(“按下向下键\n”);
else if(key==GLUT\u key\u UP)
printf(“按下向上键\n”);
}
int
main(int argc,char*argv[])
{
双x_0,y_0,x_1,y_1;
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
GLUTINITWindowsSize(640480);
位置(400400);
创建窗口(“特殊键”);
init();
glutSpecialFunc(catchKey);
glutMainLoop();
}
您的函数应该是这样的
void handleSpecialKeypress(int key, int x, int y) {
switch (key) {
case GLUT_KEY_LEFT:
isLeftKeyPressed = true;
if (!isRightKeyPressed) {
DO SOMETHING HERE;
}
break;
case GLUT_KEY_RIGHT:
isRightKeyPressed = true;
if (!isLeftKeyPressed) {
DO SOMETHING HERE;
}
break;
}
}
void handleSpecialKeyReleased(int key, int x, int y) {
switch (key) {
case GLUT_KEY_LEFT:
isLeftKeyPressed = false;
break;
case GLUT_KEY_RIGHT:
isRightKeyPressed = false;
break;
}
}
您还需要在main()方法中调用这些函数
- 变量isRightKeyPressed和isLeftKeyPressed是我定义的全局变量
glutSpecialFunc(handleSpecialKeypress);
glutSpecialUpFunc(handleSpecialKeyReleased);