独立关闭多个GLUT窗口

时间:2013-12-16 09:22:41

标签: c++ opengl 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;
}

2 个答案:

答案 0 :(得分:1)

我不记得GLUT能够在同一个线程中独立关闭窗口,就像那样。因为你只使用一个glutMainLoop()调用来使它们运行,所以当主循环被杀死一个窗口时,它就会被杀掉所有这些。

您可以尝试在自己的Thread中创建窗口。这可能有用,但我不完全确定。

您可以尝试的其他方法是使用GLFW代替,使用GLFW,您需要自己创建主循环等。最重要的是,它更容易使用,它可以让您在OpenGL程序上获得更多控制权。此外,如果您还没有它,您应该得到类似GLEW的内容。

答案 1 :(得分:0)

你刚刚将这种需求留给了GLUT的功能。但你很幸运:GLUT = / = OpenGL,还有许多其他框架可以满足你的需求。您如何看待Qt,它不仅为您提供运行时环境和OpenGL小部件,还提供了大量用于绘制UI元素的小部件。