我剛開始學習OpenGL/Glut,並且遇到了一些問題。我想打印一個字符串key: a
,只要我點擊鍵a
,但似乎我不知道我在做什麼。處理鍵盤輸入的回調函數
我打電話從main()
功能glutKeyboardFunc()
,和我通過它keyinput()
,測試key
是ESC
或a
。另一件事是,當我嘗試從scene1()
內部打印某些東西時,它的功能非常棒!嗯,奇怪爲什麼?
void printstr(void* font, char* str, GLfloat x, GLfloat y, GLfloat z)
{
char* c = str;
// set the raster position
glRasterPos3f(x, y, z);
for(; *c != '\0'; c++)
glutBitmapCharacter(font, *c);
}
void keyinput(unsigned char key, int x, int y)
{
switch(key)
{
case 27:
killsound();
exit(0);
break;
case 'a':
glLoadIdentity();
glColor3f(0.0f, 1.0f, 0.0f); // Green
printstr(GLUT_BITMAP_8_BY_13, "Key: a", 0.0f, 0.9f, 0.0f);
break;
}
}
int main(int argc, char** argv)
{
// initialization and stuff
glutInit(&argc, argv);
.
.
.
glutDisplayFunc(scene1);
glutIdleFunc(scene1);
.
.
.
glutKeyboardFunc(keyinput);
.
.
.
glutMainLoop();
}
你可以把一個簡單的'COUT <<關鍵<< ENDL;'語句中' keyinput(..)'和檢查輸出。這將幫助您調試。 – SuperSaiyan 2012-07-15 12:22:00
@Thrustmaster我在控制檯上得到'a',但沒有在OpenGL窗口 – Jonas 2012-07-15 12:26:56