不确定如何解决此错误?
这是消息......
error C2664: 'glutSpecialFunc' : cannot convert parameter 1 from 'void (__cdecl *)(unsigned char,int,int)' to 'void (__cdecl *)(int,int,int)'
1> None of the functions with this name in scope match the target type
这是我的代码......
该函数在main中被调用。
glutSpecialFunc(Keyboard);
这是方法。
void Keyboard(unsigned char key, int x, int y) {
if (key == 27) {
exit(0);
} else if (key == GLUT_KEY_DOWN) {
drawing = 1;
} else if (key == GLUT_KEY_UP) {
drawing = 2;
} else if (key == GLUT_KEY_LEFT) {
drawing = 3;
} else if (key == GLUT_KEY_RIGHT) {
drawing = 4;
}
glutPostRedisplay();
}
答案 0 :(得分:2)
glutSpecialFunc(Keyboard);
期待仅包含int作为参数的函数。
所以你只需要改变你的函数声明:
void Keyboard(int key, int x, int y) {
if (key == 27) {
exit(0);
} else if (key == GLUT_KEY_DOWN) {
drawing = 1;
} else if (key == GLUT_KEY_UP) {
drawing = 2;
} else if (key == GLUT_KEY_LEFT) {
drawing = 3;
} else if (key == GLUT_KEY_RIGHT) {
drawing = 4;
}
glutPostRedisplay();
}
来自openGL文档:
<强> glutSpecialFunc 强>
glutSpecialFunc 设置当前的特殊键盘回调 窗口。
用法
void glutSpecialFunc(void(* func)(int key,int x,int y));