我有一个非常简单的游戏循环使用GLFW如下(Windows x64发布模式)
我希望程序执行得非常快,但是看起来下面计算的delta总是16.667ms,这似乎是glfw以某种方式限制了我的主循环的速度.这不是问题,因为我不关心超过60hz.但是,进程资源管理器和Windows任务管理器报告我的程序正在使用大部分cpu核心.
特别是吃似乎glfwSwapBuffers()吃了很多cpu,即使我什么也没画.删除该调用会将cpu使用率降低到0.5%.
顺便说一下,我的睡眠功能几乎从未被调用,因为增量总是接近16.6ms.
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3149 次 |
| 最近记录: |