Fin*_*811 3 c++ opengl glut freeglut glutcreatewindow
我已经创建了一个窗口,glutCreateWindow并开始使用循环glutMainLoop.我想结束那个循环并关闭窗口,所以我使用glutLeaveMainLoop并glutCloseFunc销毁它.我的应用程序自动终止.
我希望应用程序在窗口被销毁后继续存在.可能吗?
根据这个链接,我可以做到,但我不知道如何.我正在使用freeglut.
希望在窗口关闭时阻止FreeGLUT退出的用户应该考虑使用
glutSetOption设置GLUT_ACTION_ON_WINDOW_CLOSE.
GLUT_ACTION_ON_WINDOW_CLOSE- 控制用户或系统关闭窗口时发生的情况:
GLUT_ACTION_EXIT将立即退出应用程序(默认情况下,GLUT的行为).GLUT_ACTION_GLUTMAINLOOP_RETURNS将立即从主循环返回.GLUT_ACTION_CONTINUE_EXECUTION将继续执行剩余的窗口.
该
glutLeaveMainLoop函数导致freeglut停止事件循环.如果该GLUT_ACTION_ON_WINDOW_CLOSE选项已设置为GLUT_ACTION_GLUTMAINLOOP_RETURNS或GLUT_ACTION_CONTINUE_EXECUTION,则控制将返回到名为glutMainLoop的函数; 否则申请将退出.
把碎片放在一起:
#include <GL/freeglut.h>
#include <iostream>
void display()
{
glClear( GL_COLOR_BUFFER_BIT );
glutSwapBuffers();
}
int main( int argc, char** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
glutCreateWindow( "GLUT" );
glutDisplayFunc( display );
glutSetOption( GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS );
std::cout << "Before glutMainLoop()!" << std::endl;
glutMainLoop();
std::cout << "Back in main()!" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)