我正在尝试在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;
}

最佳答案

glutKeyboardFunc的签名是

void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
//                                 ^^^^^^^^


您的mykeypressed()的第一个参数是char,而不是unsigned char。这两种类型是不同的。

关于c++ - OpenGL glutKeyboardFunc中的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25439526/

10-10 01:11