0

openGL を初期化する簡単なクラスを書きたいと思います。runopengl、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);。どうしたの?

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 に答える