c++ - 退出 OpenGL 应用程序时清理

标签 c++ macos opengl glut

我有一个正在尝试修改的 OSX OpenGL 应用程序。当我创建整个应用程序时 调用了一堆初始化函数——包括我可以指定我自己的鼠标和键盘处理程序等的方法。例如:

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(700, 700);
glutCreateWindow("Map Abstraction");
glutReshapeFunc(resizeWindow);
glutDisplayFunc(renderScene);
glutIdleFunc(renderScene);
glutMouseFunc(mousePressedButton);
glutMotionFunc(mouseMovedButton);
glutKeyboardFunc(keyPressed);

在某些时候,我将控制权交给了 glutMainLoop,然后我的应用程序开始运行。在运行过程中我创建了一大堆对象。我想清理这些。有什么方法可以告诉 GLUT 在它退出之前调用清理方法吗?

最佳答案

在 freeglut 中,如果你这样调用:

glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION)

在进入主循环之前,然后当窗口关闭时,主循环函数将返回,您可以进行清理。

值得注意的是,在那个阶段 GL 上下文已经被销毁,因此您不能执行任何 GL 操作。

关于c++ - 退出 OpenGL 应用程序时清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2688098/

相关文章:

c++ - 如何在QWebEngineView中保存动态生成的网页?

python - VS Code 在 Mac 上保存 Python 文件需要很长时间

macos - 如何拦截Cmd+Q

macos - `git difftool -d` 在 mac 上获取 'file does not exist' 错误

c++ - Ubuntu 上的 Eclipse 和 OpenGL 设置

c++ - 分解类子集的纯虚函数的实现

c++ - 使用 Qt 在 Mac 上设置图标

c++ - 执行时动态库链接

c++ - SDL2 + OpenGL + SDL2_TTF : Displaying text

opengl - C++图形化编程