为什么 eglswapinterval 不能禁用垂直同步?

Why eglswapinterval cannot disable v-sync?

我的环境:

qt.scenegraph.general: QSG: basic render loop
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: texture atlas dimensions: 2048x2048
qt.scenegraph.general: R/G/B/A Buffers:   8 8 8 0
qt.scenegraph.general: Depth Buffer:      24
qt.scenegraph.general: Stencil Buffer:    8
qt.scenegraph.general: Samples:           0
qt.scenegraph.general: GL_VENDOR:         Imagination Technologies
qt.scenegraph.general: GL_RENDERER:       PowerVR Rogue GE7800
qt.scenegraph.general: GL_VERSION:        OpenGL ES 3.2 build 1.10@5187610

我是 运行 一个 Hello world QML 程序和上面的配置。

QT_QPA_EGLFS_SWAPINTERVAL=0
QT_QPA_UPDATE_IDLE_TIME=0
QSG_RENDER_LOOP=basic

我通过 PVRTrace https://www.imgtec.com/developers/powervr-sdk-tools/pvrtrace/

测试 QT_QPA_EGLFS_SWAPINTERVAL

它表明 eglSwapInterval 确实如上设置正确。 但问题是程序卡在了 60FPS。 为什么我不能禁用垂直同步。

简短的回答是垂直同步行为完全取决于平台。实际上 eglSwapInterval() 实际上只是提示,它是否实际执行任何操作都是由实现定义的。在大多数平台上它没有 - 例如在 Android 上,您既不能禁用它,也不能将 FPS 固定为 30。建议与平台提供商一起提高。