0

我想写一个初始化openGL的简单类。我决定创建run初始化 opengl、glutDisplayFunc、glutMainLoop 的方法。我想将绘图函数传递给此方法并将其用作参数glutDisplayFunc

void OpenGL::run(void(*drawFunction())) {
    this->init();
    glutDisplayFunc(drawFunction);
    glutMainLoop();
};

但我有一个错误argument of void type *(*)() is incompatible with parameter of type void (*)()

glutDisplayFunc(&drawFunction);它也不起作用glutDisplayFunc(*drawFunction);。有什么问题?

4

1 回答 1

5

你放错了右括号:

void OpenGL::run(void (*drawFunction)()) {

函数指针然后像任何其他指针一样工作,您只需按值传递它们。你已经正确地做到了:glutDisplayFunc(drawFunction);

文档glutDisplayFunc还显示了回调的原型:http ://www.opengl.org/resources/libraries/glut/spec3/node46.html

于 2013-09-27T20:34:41.350 回答