У меня есть очень простой игровой цикл с использованием GLFW следующим образом (режим Windows x64 Release)
Я ожидаю, что программа будет выполняться очень быстро, однако кажется, что моя дельта, рассчитанная ниже, всегда составляет 16,667 мс, что может показаться тем, что glfw каким-то образом ограничивает скорость моего основного цикла. Это не проблема, так как я не забочусь о частоте более 60 Гц. Однако проводник процессов и диспетчер задач Windows сообщают, что моя программа использует большую часть ядра процессора.
В частности, кажется, что glfwSwapBuffers() потребляет много ресурсов процессора, хотя я ничего не рисую. Удаление этого вызова снижает загрузку процессора до 0,5%.
Кстати, моя функция Sleep почти никогда не вызывается, потому что дельта всегда около 16,6 мс.
main ()
{
double prevTime = glfwGetTime();
//init glfw ..
while(!glfwWindowShouldClose(window))
{
double time0=glfwGetTime();
double delta = time0- prevTime;
if (delta >= g_FrameInterval)
{
glfwPollEvents();
prevTime= time0;
glfwSwapBuffers(window);
}
else
{
Sleep(10);
}
}
}
Windows
, поскольку ваш вопрос относится к Windows. - person Basile Starynkevitch   schedule 19.09.2014