c++ - 指向 glutDisplayFunc 函数的指针

标签 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: Warning in (unamed): The following is a new check for GLUT 3.0; update your code. GLUT: Fatal Error in (unamed): redisplay needed for window 1, but no display callback.

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

最佳答案

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

关于c++ - 指向 glutDisplayFunc 函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564272/

相关文章:

c++ - OpenGL 中的天空盒

c++ - 禁用照明的 OpenGL 绘图丢失其 "depth"

c++ - 在源代码中,调用函数时不使用 ()。文档给出了 1 个必需参数

C++通过ref返回成员的方法和get-set方法之间的区别

java - 是否通过代码转换大型 json 文件

c++ - 如何使编译器仅搜索包含目录中的特定文件并排除该特定目录中的其余文件

C编译错误(没有那个文件或目录,编译终止)

macos - 如何在 Mac 上运行的 glut 程序中检测命令键作为修饰符?

c++ - 在 Visual Studio 2010 下制作基于 GCC 的项目构建和运行