我开始学习GPipe 库,并且想知道如何使用它来完成 vsync 和 FPS 控制。最初,我认为一个单独的线程可以每1 * 1000000 / FPS
微秒阻塞一次并运行swapContextBuffers
,但这意味着单独的线程需要构建自己的ContextT
,因此它是自己的窗口。
该功能本身的文档简要提到,如果在系统中启用了 VSync,它可能会阻止- 这是什么意思?我将如何启用它?
设置交换间隔特定于 OpenGL 中的窗口管理器。对于 GLFW,您需要调用glfwSwapInterval。不幸的是,你不能在 GPipe 中自己做,因为你的 ContextT 正在运行的线程没有当前的 GL 上下文。这实际上应该在 GPipe-GLFW 的上下文创建中实现,即在newContext'中。
不,您不能异步交换 GPipe 中的缓冲区(但即使可能,您也不想这样做)。