Не знаете, как исправить эту ошибку?
Вот сообщение...
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
И вот мой код....
Функция вызывается в основном.
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();
}
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));