使用GLUT将OpenGL窗口居中

时间:2010-02-02 04:47:59

标签: c++ opengl glut

我有一个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了解不多。

2 个答案:

答案 0 :(得分:21)

另外,不是链接user32.lib而是单独使用glut:

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);

答案 1 :(得分:1)

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