2013-12-16 54 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小部件,而且還提供了一組用於繪製UI元素的小部件。