D3D アプリで安定した固定 60 fps を達成しようとしており、それを行うには vsync を実行します。次のようにループをセットアップしました。
while(isRunning)
{
ProcessMessages(window);
renderer->context->ClearRenderTargetView(renderer->renderTarget, color);
renderer->swapChain->Present(1, 0);
end = GetCurrentTick();
double ms = GetElapsedMilliseconds(start, end);
start = end;
}
// Function definitions
inline LONGLONG GetCurrentTick()
{
LARGE_INTEGER count;
QueryPerformanceCounter(&count);
return count.QuadPart;
}
inline double GetElapsedMilliseconds(LONGLONG start, LONGLONG end)
{
return (1000.0 * (double)(end - start)) / (double)freq.QuadPart;
}
「ms」変数は常に同じであると予想されますが、実際には約 16.1 ミリ秒から 17 ミリ秒を超えて変化しています。私が行っている間違った仮定や単純なコーディング エラーはありますか? 事前に助けてくれてありがとう。