Я создал окно с glutCreateWindow
и начал цикл, используя glutMainLoop
, Я хочу закончить этот цикл и закрыть окно, чтобы я использовал glutLeaveMainLoop
а также glutCloseFunc
уничтожить это. Мое приложение автоматически закрывается.
Я хотел бы, чтобы приложение сохранялось после разрушения окна. Является ли это возможным?
Согласно этому ссылка на сайт Я могу сделать это, однако я не знаю как. я использую freeglut.
В документ для glutCloseFunc()
:
Пользователи, которые хотят запретить выход FreeGLUT при закрытии окна, должны использовать
glutSetOption
установить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
опция была установлена на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;
}
Других решений пока нет …