我正在尝试在OpenGL中使用glutKeyboardFunc。但是当我在main中使用这个函数时,它会给我一个错误No matching function for call to 'glutKeyboardFunc'
。为什么会这样?
#include<GLUT/glut.h>
#include<OpenGL/OpenGL.h>
#include<iostream>
using namespace std;
static void display(){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.6, 1, 0.4);
glFlush();
}
void mykeypressed(char key, int x,int y){
}
int main(int argc, char * argv[]){
glutInit(&argc, argv);
glutInitWindowPosition(300, 300);
glutInitWindowSize(500, 500);
glutCreateWindow("ps4_1");
glutDisplayFunc(display);
glutKeyboardFunc(mykeypressed);
glutTimerFunc(10000, exit, 0);
glutMainLoop();
return 0;
}
答案 0 :(得分:2)
glutKeyboardFunc
的签名是
void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
// ^^^^^^^^
mykeypressed()
的第一个参数是char
,而不是unsigned char
。这两种类型是不同的。