c++ - GLUT 和 C++ 类

标签 c++ opengl glut freeglut

我不久前开始使用 OpenGL,使用 GLUT。您不能将成员函数传递给 GLUT 函数。 (或者就此而言指向成员的指针,尽管我并没有真正探索该选项)。

我想知道是否有一个“体面”的方式来解决这个问题,或者“最体面”的方式是什么?我知道您可以使用静态成员函数,但是没有更好的方法吗?

我知道还有其他库,例如 SFML,它们是用 C++ 编写的并提供基于 C++ 类的接口(interface),但我想知道关于 GLUT(确切地说是 freeglut)的可能性是什么。

最佳答案

首先,GLUT 不适用于严肃的应用程序工作。它用于简单的图形演示。为此目的,这很好。如果您发现自己尝试在 GLUT 中认真工作,您会发现自己花费大量时间来解决它的局限性。此限制只是您最终会遇到的众多限制之一。 GLFW,虽然仍然有这个限制(虽然下一个版本不会),但通常更适合严肃的应用程序工作。

其次,解决这个问题的“最体面”的方法取决于你在做什么。如果您只有一个窗口,那么正确的解决方案只是一个简单的静态函数,它可以将全局指针(或返回全局指针的函数)指向您感兴趣的任何类。

如果您有多个窗口,那么您需要的是一个全局 std::map,它将 GLUT 的窗口标识符映射到指向某个对象的指针。然后,您可以获得从哪个窗口调用特定函数,并使用映射将该调用转发到代表该窗口的特定对象。

关于c++ - GLUT 和 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211422/

相关文章:

c++ - 如何通知我的用户读取尚未完成?

c++ - Visual Studio 2010 和 MinGW

c++ - SDL + OpenGL : access violation when creating buffer

c++ - Blade 的扭曲效果 (glRotatef) 不起作用

c++ - 从 SID 创建用户 token ,在用户上下文中扩展环境变量

opengl - 优化最小/最大深度 GLSL 着色器

c++ - 使用 GL_DRAW_FRAMEBUFFER 目标时,glBindFramebuffer 会导致 "invalid operation"GL 错误

c++ - 将纹理 bmp 文件作为纹理平铺到 OpenGL 中的矩形上?

c++ - 从 Glut 中的滚轮获取输入?

c++ - 死键问题(急性、分音符等)c++