0

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

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:警告(未命名):以下是 GLUT 3.0 的新检查;更新您的代码。GLUT:致命错误(未命名):窗口 1 需要重新显示,但没有显示回调。

如何正确地做到这一点?有什么想法吗?

4

1 回答 1

1

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

于 2012-05-12T13:50:26.853 回答