指向glutDisplayFunc函数的指针

时间:2012-05-12 13:41:09

标签: c++ opengl glut

我想制作3个窗口来表示围绕给定轴的旋转。 为此我创建了一个包含函数XYZAxis的类render。 接下来,从main我调用函数creatWindow,它创建一个GLUT窗口。 但是我不知道如何正确地将函数渲染传递给glutDisplayFunc :( 主要的片段

void (XYZAxis::* pmf)(void);
pmf = &XYZAxis::render;

XYZAxis *xaxis=&XYZAxis(origin,5,10);


glutDisplayFunc( void(xaxis->*pmf)() ) ;
glutIdleFunc(void(xaxis->*pmf)());

和XYZAxis类中的函数

void render(void) 
{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();



this->orientation=this->orientation*(this->angle);
this->draw();

glutSwapBuffers();
}

当程序到达glutMainLoop()时编译; 它会抛出错误并关闭窗口

  

GLUT:(unamed)中的警告:以下是对GLUT 3.0的新检查;更新   你的代码。   GLUT:(unamed)中的致命错误:窗口1需要重新显示,但没有显示   回调。

如何正确地做到这一点?任何想法?

1 个答案:

答案 0 :(得分:1)

我认为你不能将指向C ++实例方法的指针传递给像GLUT这样的C API。您需要使用指向您感兴趣的实例的全局指针将方法调用包装在C函数中。请参阅http://www.parashift.com/c++-faq-lite/pointers-to-members.html