使用 GLUT 将 OpenGL 窗口居中

新手上路,请多包涵

我有一个 640x480 的 openGL 窗口,我需要在屏幕中间居中。我以前用过:

 glutInitWindowPosition((GetSystemMetrics(SM_CXSCREEN)-640)/2,
                       (GetSystemMetrics(SM_CYSCREEN)-480)/2);

哪个有效。

但是现在当我编译时突然…

 Linking...
1>Project1.obj : error LNK2028: unresolved token (0A000372) "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>Project1.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>C:\Users\My Computer\Documents\School Stuff\CS445\Project1\Debug\Project1.exe : fatal error LNK1120: 2 unresolved externals

有人请帮忙。这对我来说非常烦人和令人沮丧,因为我对 OpenGL 和 GLUT 了解不多。

原文由 Aaron McKellar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 802
2 个回答

此外,您可以仅使用 glut 来代替链接 user32.lib:

 glutGet(GLUT_SCREEN_WIDTH) // returns Screen width

glutGet(GLUT_SCREEN_HEIGHT) // returns Screen height

既然可以跨平台,为什么还要依赖 Windows?

因此,您的代码将如下所示:

 glutInitWindowPosition((glutGet(GLUT_SCREEN_WIDTH)-640)/2,
                       (glutGet(GLUT_SCREEN_HEIGHT)-480)/2);

原文由 Kornel Kisielewicz 发布,翻译遵循 CC BY-SA 2.5 许可协议

您需要确保链接到 User32.lib,这是定义了 GetSystemMetrics() 的静态库。打开您的项目设置并确保 User32.lib 列在您要链接的所有 .lib 中。

原文由 Adam Rosenfield 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题