OpenGL渲染循环如何工作以及如何正确计算FPS?

new9mtju  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(172)

我尝试在渲染循环中计算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

所以看起来几乎每隔一个绘制调用都会被跳过。如何检查绘图是否在一帧中被跳过,以便不将其计入帧速率,这些迭代中发生了什么以及为什么跳过它们?

kh212irz

kh212irz1#

好吧,所以它似乎是苹果在M1 MacBook上打破的东西,并且已经尝试修复它:

作为一个临时修复降级到GLFW 3.3修复垂直同步和FPS计数器,使帧速率保持在稳定的60。

相关问题