我想制作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需要重新显示,但没有显示 回调。
如何正确地做到这一点?任何想法?
答案 0 :(得分:1)
我认为你不能将指向C ++实例方法的指针传递给像GLUT这样的C API。您需要使用指向您感兴趣的实例的全局指针将方法调用包装在C函数中。请参阅http://www.parashift.com/c++-faq-lite/pointers-to-members.html