使用GLUT将OpenGL窗口居中

Aar*_*lar 11 c++ opengl glut

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

glutInitWindowPosition((GetSystemMetrics(SM_CXSCREEN)-640)/2,
                       (GetSystemMetrics(SM_CYSCREEN)-480)/2);
Run Code Online (Sandbox Code Playgroud)

工作.

但是,当我编译时,突然间......

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
Run Code Online (Sandbox Code Playgroud)

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

Kor*_*icz 21

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

glutGet(GLUT_SCREEN_WIDTH) // returns Screen width
Run Code Online (Sandbox Code Playgroud)

glutGet(GLUT_SCREEN_HEIGHT) // returns Screen height
Run Code Online (Sandbox Code Playgroud)

当您可以跨平台时,为什么要依赖Windows?

因此,您的代码看起来像:

glutInitWindowPosition((glutGet(GLUT_SCREEN_WIDTH)-640)/2,
                       (glutGet(GLUT_SCREEN_HEIGHT)-480)/2);
Run Code Online (Sandbox Code Playgroud)