2013-12-16 2 views
0

В моей программе GLUT я создал два окна. когда я пытаюсь закрыть одно окно, вся программа отключается. может кто-нибудь сказать, как этого избежать.закрытие нескольких окон GLUT независимо

Мой код, чтобы создать окно выглядит следующим образом

int main(int argc, char **argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); 
    glutInitWindowPosition(100,100); 
    glutInitWindowSize(ww,wh); 
    window1 = glutCreateWindow("sample"); 
    glutReshapeFunc(changeSize); 
    glutIdleFunc(renderScene); 
    glutDisplayFunc(renderScene); 
    window3 = glutCreateWindow("sample2"); 
    glutReshapeFunc(changeSize); 
    glutDisplayFunc(renderScene2); 
    glutIdleFunc(renderScene2); 
    glutMouseFunc(mouse); 
    glutPostRedisplay(); 
    glutMainLoop(); 
    return 1; 
} 

ответ

1

Я не помню, GLUT будучи в состоянии закрыть окна независимо друг от друга в том же потоке, как и что. Поскольку вы используете только один вызов glutMainLoop(), чтобы получить их, тем самым, когда основной цикл убит за одно окно, он убит для всех из них.

Вы можете попробовать создать окна в своей собственной теме. Это может сработать, но я не совсем уверен.

Что-то еще вы можете попробовать, чтобы использовать GLFW вместо этого, используя GLFW, вам нужно создать основной цикл и т.д., самостоятельно. Итог, это намного проще в использовании, и это дает вам намного больше контроля над вашими программами OpenGL. Также, если у вас его еще нет, вы должны получить что-то вроде GLEW.

+1

@ datenwolf Вам необходимо обновить знания GLFW, версия 3.0 поддерживает несколько окон. http://www.glfw.org/docs/latest/news.html – Vallentin

+0

Спасибо за обновление! – datenwolf

0

Вы только что оставили возможности GLUT с этим требованием. Но вам повезло: GLUT =/= OpenGL, и есть много других фреймворков, которые удовлетворят ваши потребности. Как насчет того, чтобы вы взглянули на Qt, который предлагает вам не только среду выполнения и виджет OpenGL, но и большой набор виджетов для рисования элементов пользовательского интерфейса.

Смежные вопросы