为什么 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。建议与平台提供商一起提高。
我的环境:
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。建议与平台提供商一起提高。