我想编写一个初始化openGL的简单类。我决定创建方法run
,我初始化opengl,glutDisplayFunc,glutMainLoop。
我想将draw函数传递给此方法,并将其用作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);
。
有什么问题?
答案 0 :(得分:5)
你错了一个右括号:
void OpenGL::run(void (*drawFunction)()) {
函数指针就像任何其他指针一样,只需按值传递它们。你已经这样做了:glutDisplayFunc(drawFunction);
glutDisplayFunc
的文档还显示了回调的原型:http://www.opengl.org/resources/libraries/glut/spec3/node46.html