在我的过剩程序中,我创建了两个窗口。当我试图关闭一个窗口时,整个程序就会关闭。有谁能告诉我们如何避免。
创建窗口的代码如下所示
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;
}发布于 2013-12-16 09:36:04
我不记得过剩能够在同一线程中独立地关闭窗口,就像那样。因为您只使用一个glutMainLoop()调用来让它们运行,因此当一个窗口的主循环被杀死时,它就会被所有窗口杀死。
您可以尝试在它们自己的线程中创建窗口。也许能行,但我不完全确定。
您可以尝试的其他方法是使用GLFW,使用GLFW,您需要自己创建主循环等等。说到底,这更容易使用,它给您更多的控制权,对您的OpenGL程序。另外,如果您还没有它,您应该得到类似于格鲁的东西。
发布于 2013-12-16 10:11:26
你刚刚把过剩的能力留给了这个需求。但是您很幸运: GLUT =/= OpenGL,还有许多其他框架可以满足您的需求。看看Qt怎么样,它不仅提供运行时环境和OpenGL小部件,而且还提供了大量的小部件来绘制UI元素。
https://stackoverflow.com/questions/20607228
复制相似问题