Центрирование окна OpenGL с помощью GLUT - PullRequest
11 голосов
/ 02 февраля 2010

У меня есть окно openGL размером 640x480, которое мне нужно центрировать по центру экрана.Я ранее использовал:

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 ]

21 голосов
/ 02 февраля 2010

Кроме того, вместо связывания 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 голос
/ 02 февраля 2010

Необходимо убедиться, что вы ссылаетесь на User32.lib, статическую библиотеку, в которой определено GetSystemMetrics(). Откройте настройки своего проекта и убедитесь, что User32.lib указан среди всех .libs, с которыми вы ссылаетесь.

...