在我的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;
}
答案 0 :(得分:1)
我不记得GLUT能够在同一个线程中独立关闭窗口,就像那样。因为你只使用一个glutMainLoop()
调用来使它们运行,所以当主循环被杀死一个窗口时,它就会被杀掉所有这些。
您可以尝试在自己的Thread中创建窗口。这可能有用,但我不完全确定。
您可以尝试的其他方法是使用GLFW代替,使用GLFW,您需要自己创建主循环等。最重要的是,它更容易使用,它可以让您在OpenGL程序上获得更多控制权。此外,如果您还没有它,您应该得到类似GLEW的内容。
答案 1 :(得分:0)
你刚刚将这种需求留给了GLUT的功能。但你很幸运:GLUT = / = OpenGL,还有许多其他框架可以满足你的需求。您如何看待Qt,它不仅为您提供运行时环境和OpenGL小部件,还提供了大量用于绘制UI元素的小部件。