Я заметил, что когда я рендерил простой примитив, такой как вращающийся куб, и увеличивал угол на 0,1 при каждом проходе через традиционный цикл while (! Done), я получаю результат, когда включена вертикальная синхронизация, и когдавыкл (как изменилось в моей панели управления nVidia) резко отличается с точки зрения скорости.
Например, я использую следующий код:
while (!done)
{
PeekMessage(&msg, hWnd, NULL, NULL, PM_REMOVE);
if (msg.message == WM_QUIT)
{
done = true;
}
else
{
angle += 0.1;
if (angle >= 360.0)
{
angle = 0.0;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -5.0f);
glPushMatrix();
glRotatef(angle, 1.0f, 0.0f, 0.0f);
glRotatef(angle, 0.0f, 1.0f, 0.0f);
glColor3f(1.0f, 0.0f, 0.0f);
glutSolidCube(2.0f);
glPopMatrix();
glFlush();
SwapBuffers(hDC);
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Когда вертикальная синхронизация отключена, этокуб вращается намного быстрее, чем при включенной вертикальной синхронизации.Теперь в играх FPS блокируется до 60 кадров в секунду, когда включена вертикальная синхронизация, и может свободно прыгать так высоко, как позволяет ваш монитор, когда он отключен.Вероятно, это как-то связано с этим.
Я легко могу решить эту проблему, увеличив или уменьшив угол с каждым проходом, есть ли способ заставить мой куб вращаться одинаково, несмотря на включение или выключение vsync