glutCloseFunc без завершения приложения

Я создал окно с glutCreateWindow и начал цикл, используя glutMainLoop, Я хочу закончить этот цикл и закрыть окно, чтобы я использовал glutLeaveMainLoop а также glutCloseFunc уничтожить это. Мое приложение автоматически закрывается.

Я хотел бы, чтобы приложение сохранялось после разрушения окна. Является ли это возможным?

Согласно этому ссылка на сайт Я могу сделать это, однако я не знаю как. я использую freeglut.

3

Решение

В документ для 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;
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]