【发布时间】:2012-05-28 07:53:03
【问题描述】:
是否可以使用 glut 创建一个固定大小的窗口,因此窗口尺寸的任何更改都将被忽略。
我切换回 SDL 或类似的东西有点太晚了。
【问题讨论】:
-
“我切换回 SDL 或类似的东西有点太晚了。”我无法想象这将是一个重大问题。 GLUT 用于窗口设置和管理;切换管理器应该只需要相当本地化的更改。除非您依赖于 GLUT 特定的功能,例如 sRGB 帧缓冲区等。
是否可以使用 glut 创建一个固定大小的窗口,因此窗口尺寸的任何更改都将被忽略。
我切换回 SDL 或类似的东西有点太晚了。
【问题讨论】:
最终,没有。您可以做的最好的事情是调用glutReshapeWindow 以在您检测到它已调整大小时将其强制为特定大小。但仅此而已。如果这样做,则需要通过确保仅在新大小与所需大小不同时才调用glutReshapeWindow 来防止无限循环。这不会阻止用户尝试调整它的大小,但会阻止他们成功。可能。
请记住:GLUT 专为演示应用程序和简单的测试平台而设计。对于这样的应用程序,调整窗口大小的能力是相当标准的。
【讨论】:
显然,这是不可能的,但您可以在glutReshapeFunc-callback 中使用glutReshapeWindow,在释放鼠标后立即将其恢复。它非常有效,并且据我所知是最好的解决方案。仅使用 freeglut 测试:
glutReshapeFunc(resize);
void resize(int width, int height) {
// we ignore the params and do:
glutReshapeWindow( 800, 600);
}
【讨论】: