独立关闭多个GLUT窗口

closing multiple GLUT windows independently

本文关键字:GLUT 窗口 独立      更新时间:2023-10-16

在我的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;
}

我不记得GLUT能够像那样在同一个线程中独立关闭窗口。由于您只使用一个glutMainLoop()调用来启动它们,因此当主循环对于一个窗口被终止时,它对于所有窗口都被终止。

您可以尝试在自己的线程中创建窗口。这可能奏效,但我不完全确定

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

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