【问题标题】:How to dynamically toggle VSync in a Qt application at runtime?如何在运行时在 Qt 应用程序中动态切换 VSync?
【发布时间】:2020-12-07 22:17:47
【问题描述】:

Qt5 允许使用QSurfaceFormat::setSwapInterval 让应用程序决定是否启用垂直同步。但是,这只能在应用程序启动时完成,例如要禁用 VSync,在创建应用程序对象之前调用以下命令就足够了:

QSurfaceFormat format;
format.setSwapInterval(0);
QSurfaceFormat::setDefaultFormat(format);

上面的代码将通过在 Qt Scenegraph 使用的 Opengl 上下文中将交换间隔设置为零来禁用 Qt Quick 应用程序中的 VSync。但是,我想要的是可以在运行时在需要时(不仅仅是在 QML 引擎启动之前)禁用和启用 VSync,如下所示:

void toggleVSync(){...}

环顾四周,我并没有真正找到任何东西,所以我想知道是否有办法实现这一目标。

【问题讨论】:

    标签: c++ qt opengl vsync


    【解决方案1】:

    【讨论】:

    • 好的,所以我在 Linux X11 上试了一下(参见代码 here),但似乎 GLX_SWAP_INTERVAL_EXT 在查询时似乎总是返回 0。我在 QQuickFramebufferObject 中调用我的代码。
    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多