のglutCloseFunc()ドキュメント:
ウィンドウが閉じられたときに FreeGLUT が終了するのを防ぎたいユーザーは、glutSetOptionset への使用を検討する必要がありますGLUT_ACTION_ON_WINDOW_CLOSE。
ドキュメントにglutSetOption()つながる:
GLUT_ACTION_ON_WINDOW_CLOSE- ユーザーまたはシステムによってウィンドウが閉じられたときの動作を制御します。
GLUT_ACTION_EXITすぐにアプリケーションを終了します (デフォルト、GLUT の動作)。
GLUT_ACTION_GLUTMAINLOOP_RETURNSメインループからすぐに戻ります。
GLUT_ACTION_CONTINUE_EXECUTION残りのウィンドウの実行を続行します。
そしてからglutLeaveMainLoop():
このglutLeaveMainLoop関数により、freeglut はイベント ループを停止します。オプションがまたはにGLUT_ACTION_ON_WINDOW_CLOSE設定されている場合、制御は glutMainLoop を呼び出した関数に戻ります。それ以外の場合、アプリケーションは終了します。GLUT_ACTION_GLUTMAINLOOP_RETURNSGLUT_ACTION_CONTINUE_EXECUTION
ピースをまとめる:
#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;
}