有没有办法在freeglut(或过剩)中插入退出回调函数?

时间:2012-06-20 06:37:53

标签: opengl glut freeglut

在我的freeglut项目中,我已经分配了很多内存,当用户关闭freeglut(或过剩)窗口时,我没有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:8)

FreeGLUT提供了几种解决方案:

  1. 您可以致电glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION)glutLeaveMainLoop()以使glutMainLoop()功能返回,然后您可以在glutMainLoop()致电后释放所需的所有内存。

  2. 您可以像这样制作自己的事件循环,而不是调用glutMainLoop()

    bool running = true;
    while (running)
    {
        glutMainLoopEvent();
    }And whenever you want to exit application - just set running variable to false, and free the allocated memory after while loop.
    
  3. 或者您无能为力 - 任何现代操作系统都会在进程终止时正确释放所有已分配的内存。当然,如果您需要在终止时做一些特殊的事情 - 比如写入日志文件,发送网络数据包,那么您必须手动执行此操作。

答案 1 :(得分:1)

在主循环之前注册退出函数 atexit(onexit)