如何使用 GLUT 创建两个主要 windows?
How do I create two main windows with GLUT?
我正在做一个练习,我使用 GLUT 在三个 windows 上绘制三个框。他们分别绘制,但在同一个项目中,三个windows显示正确,但立即关闭代码1.
的程序
glutInitWindowPosition(x,y);
windowOne = glutCreateWindow("windowOne");
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-400, 400, -400, 400, -500, 500);
glutInitWindowPosition(x,y);
windowTwo = glutCreateWindow("windowTwo");
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
glFrustum(-60, 60, -60, 60, 60, 200);
gluLookAt(0, 0, 120, 0, 0, 0, 0, 1, 0);
每个 window 都在一个单独的文件中自行加载,它们都完全按照预期显示。我有一种感觉,我应该在每个初始化之间的某个时间点设置 window,但我不知道为什么。我目前没有绘图功能,因为我想在没有绘图代码的情况下确认这种情况。
我还应该注意,我必须完全按照我所做的那样创建单独的 windows,因此其他 window 绘图函数没有用。
切勿在创建 GLUT 的同一函数中执行 OpenGL 绘图操作 windows。它不起作用。您需要为每个 window 注册一个显示回调函数并在那里进行所有绘制。如果您想使用 GLUT 看到一些合理的东西,则必须调用 glutMainLoop。
我通过示例找到了答案,所以我会 post 以防其他人遇到类似问题。
需要在每个window后面添加draw函数,样式为
// window one
glutInitWindowPosition(50, 50);
WindowOne = glutCreateWindow("orthogonal projection");
glutDisplayFunc(drawWindowOne);
// window two
glutInitWindowPosition(650, 50);
WindowThree = glutCreateWindow("3D viewing system with glFrustum()");
glutDisplayFunc(drawWindowTwo);
我正在使用一个绘制函数,它随机播放每个 window 并在使用 glutSetWindow 后生成其特定的绘制。每次绘制都在每个 window 初始化之后进行,并且可以在彼此之后调用多个 glutDisplayFunc() 。
我本来以为我是用glutDisplayFunc设置了一个指针,这样当显示例程为帧走完时,它只会生成最后调用的显示函数,而不是所有的显示函数。
我正在做一个练习,我使用 GLUT 在三个 windows 上绘制三个框。他们分别绘制,但在同一个项目中,三个windows显示正确,但立即关闭代码1.
的程序glutInitWindowPosition(x,y);
windowOne = glutCreateWindow("windowOne");
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-400, 400, -400, 400, -500, 500);
glutInitWindowPosition(x,y);
windowTwo = glutCreateWindow("windowTwo");
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
glFrustum(-60, 60, -60, 60, 60, 200);
gluLookAt(0, 0, 120, 0, 0, 0, 0, 1, 0);
每个 window 都在一个单独的文件中自行加载,它们都完全按照预期显示。我有一种感觉,我应该在每个初始化之间的某个时间点设置 window,但我不知道为什么。我目前没有绘图功能,因为我想在没有绘图代码的情况下确认这种情况。
我还应该注意,我必须完全按照我所做的那样创建单独的 windows,因此其他 window 绘图函数没有用。
切勿在创建 GLUT 的同一函数中执行 OpenGL 绘图操作 windows。它不起作用。您需要为每个 window 注册一个显示回调函数并在那里进行所有绘制。如果您想使用 GLUT 看到一些合理的东西,则必须调用 glutMainLoop。
我通过示例找到了答案,所以我会 post 以防其他人遇到类似问题。
需要在每个window后面添加draw函数,样式为
// window one
glutInitWindowPosition(50, 50);
WindowOne = glutCreateWindow("orthogonal projection");
glutDisplayFunc(drawWindowOne);
// window two
glutInitWindowPosition(650, 50);
WindowThree = glutCreateWindow("3D viewing system with glFrustum()");
glutDisplayFunc(drawWindowTwo);
我正在使用一个绘制函数,它随机播放每个 window 并在使用 glutSetWindow 后生成其特定的绘制。每次绘制都在每个 window 初始化之后进行,并且可以在彼此之后调用多个 glutDisplayFunc() 。
我本来以为我是用glutDisplayFunc设置了一个指针,这样当显示例程为帧走完时,它只会生成最后调用的显示函数,而不是所有的显示函数。