我正在尝试使用 glew 和 glfw 创建示例应用程序。主循环很简单,看起来像:
while (running) {
someUsefullMathHere();
renderer->render(timeDelta);
glfwSwapBuffers(window);
glfwPollEvents();
running = running & (!glfwWindowShouldClose(window));
}
问题是由于 vsync 当前线程在 glfwSwapBuffers 执行中休眠(fps 限制为 60 fps)。我正在寻找一种方法来利用这段时间来连续执行 someUsefullMath 方法。理想情况下,代码必须类似于:
while (running) {
while (!timeToRenderAndSwap()) {
someUsefullMathHere();
}
renderer->render(timeDelta);
glfwSwapBuffers(window);
glfwPollEvents();
running = running & (!glfwWindowShouldClose(window));
}
有办法吗?