我有一个正在尝试修改的 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/