Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 独立关闭多个GLUT窗口_C++_Opengl_Glut - Fatal编程技术网

C++ 独立关闭多个GLUT窗口

C++ 独立关闭多个GLUT窗口,c++,opengl,glut,C++,Opengl,Glut,在我的GLUT程序中,我创建了两个窗口。当我试图关闭一个窗口时,整个程序将关闭。谁能告诉我如何避免呢 我创建窗口的代码如下 int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize

在我的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,您需要自己创建主循环等。总之,这更易于使用,而且它让您可以对OpenGL程序进行更多的控制。另外,如果您还没有,您应该获得类似的功能。

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

@datenwolf如果您需要更新GLFW知识,3.0版支持多个窗口。