我试图在我的main函数中循环渲染多个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);它确实渲染了两个窗口的内容,但它会一次又一次地创建windows1和2。
那么在这种情况下,如何让GLUT同时渲染两个窗口呢?有没有什么函数可以让glutDisplayFunc (display1)“聪明地”知道它应该在windows1中呈现?
发布于 2014-08-09 04:02:39
glutDisplayFunc和朋友为当前窗口设置回调。您可以使用glutSetWindow()更改当前窗口
glutSetWindow设置当前窗口;glutGetWindow返回当前窗口的标识符。如果不存在任何窗口或先前的当前窗口已被销毁,则glutGetWindow返回零。通过使用glutUseLayer,glutSetWindow不会更改窗口所使用的图层。
所以:
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);https://stackoverflow.com/questions/25211044
复制相似问题