我尝试在渲染循环中计算FPS,如下所示:
while (!glfwWindowShouldClose(window)) {
float current = (float) glfwGetTime();
delta = current - time;
time = current;
std::cout << 1.f / delta << std::endl;
render();
glfwSwapBuffers(window);
glfwPollEvents();
}
.启用垂直同步时:
glfwSwapInterval(1);
.但是输出看起来像这样:
72.0857
345.182
73.3988
343.092
71.9065
375.564
71.9188
353.294
71.9324
360.212
72.3131
277.364
所以看起来几乎每隔一个绘制调用都会被跳过。如何检查绘图是否在一帧中被跳过,以便不将其计入帧速率,这些迭代中发生了什么以及为什么跳过它们?
1条答案
按热度按时间kh212irz1#
好吧,所以它似乎是苹果在M1 MacBook上打破的东西,并且已经尝试修复它:
作为一个临时修复降级到GLFW 3.3修复垂直同步和FPS计数器,使帧速率保持在稳定的60。