如何在 Vulkan 中限制帧速率

Jer*_*rem 5 vulkan

我知道交换链的当前模式可用于将帧率同步到屏幕的刷新率(VK_PRESENT_MODE_FIFO_KHR例如)。

但是有没有办法将帧速率限制为显示器刷新率的一小部分?(例如,我希望我的应用程序以 30 FPS 而不是 60 FPS 运行。)

换句话说,有没有办法模拟wglSwapIntervalEXT(2)OpenGL 的作用?

Nic*_*las 5

Vulkan 是一个低级 API。它试图为您提供构建所需功能所需的工具。

因此,当您呈现图像时,API 假定您希望尽快呈现图像(在交换链的限制内)。如果你想延迟演示,那么你就延迟演示。也就是说,根据您自己的 CPU 计时,直到接近显示新图像的时间时才显示图像。

  • 从技术上来说,有 `VK_EXT_display_surface_counter` 扩展,但规范暗示它可能仅适用于 `display_swapchain`,并且 [Vulkan HW DB](https://vulkan.gpuinfo.org/listextensions.php) 显示 0 支持。或“VK_GOOGLE_display_timing”,但仅支持有限(仅在某些 Android 上)。 (2认同)