0
我注意到,当我使一个简单的原始的,就像一个旋转的立方体,和我增加0.1角每次通过传统的同时(!做)循环,结果我得到当垂直同步开启时与开启时相比(在我的nVidia控制面板中更改)在速度方面有很大不同。的OpenGL垂直同步是渲染速度更快
例如,我使用以下代码:
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 fps,并且在禁用时可随意跳到与显示器相同的高度。这可能与它有关。
我可以很容易地通过增加或减少我的角度看,每个通解决这个问题,有没有办法让我的立方体旋转以同样的方式,尽管VSYNC是打开或关闭?