Opengl GLUT:在循环中渲染多个窗口

Opengl GLUT:在循环中渲染多个窗口,opengl,Opengl,我试图在我的主函数中在一个循环中渲染多个GLUT窗口。 在进入循环之前,我使用以下代码定义窗口属性 glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(640,480); int windows1 = glutCreateWindow("GlutWindow 1"); int windows2 = glutCreateWindo

我试图在我的主函数中在一个循环中渲染多个GLUT窗口。 在进入循环之前,我使用以下代码定义窗口属性

glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(640,480);
int windows1 = glutCreateWindow("GlutWindow 1");
int windows2 = glutCreateWindow("GlutWindow 2");
但后来我发现,在我的循环中,当我打电话时

glutDisplayFunc (display1);
glutReshapeFunc (reshape1);

glutDisplayFunc(display2);
glutReshapeFunc(reshape2);
它将仅在windoew2函数的display2中渲染形状

我还尝试通过将下面的所有代码放在循环中来渲染循环中的两个图像

int windows1 = glutCreateWindow("GlutWindow 1");
glutDisplayFunc (display1);
glutReshapeFunc (reshape1);

int windows2 = glutCreateWindow("GlutWindow 2");
glutDisplayFunc(display2);
glutReshapeFunc(reshape2);
它确实呈现了2个窗口的内容,但会一次又一次地保持创建窗口1和2


那么,在这种情况下,如何让GLUT同时渲染两个窗口呢?是否有任何函数可以让glutDisplayFunc(display1)“智能”知道它应该在windows1中呈现?

glutDisplayFunc
和朋友为当前窗口设置回调。您可以使用以下方法更改当前窗口:

设置当前窗口;glutGetWindow返回当前窗口的标识符。如果不存在窗口或以前的当前窗口被破坏,则glutGetWindow返回零。glutSetWindow不会更改窗口使用的图层;这是使用glutUseLayer完成的

因此:

glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(640,480);
int windows1 = glutCreateWindow("GlutWindow 1");
int windows2 = glutCreateWindow("GlutWindow 2");

...

glutSetWindow(windows1);
glutDisplayFunc (display1);
glutReshapeFunc (reshape1);

glutSetWindow(windows2);
glutDisplayFunc(display2);
glutReshapeFunc(reshape2);