背景

垂直同步: 只有在显示器刷新时,才把绘制好的图象传输出去供显示。

GLX 提供了很多的扩展。本文中我们考虑在 Qt 封装下如何做。

实现

QSurfaceFormat代表QSurface的一种格式,QSurface是一个可渲染的抽象类。

void SetVSync(int param)
{
    QSurfaceFormat surfaceFormat;
    surfaceFormat.setSwapInterval(param);
    QSurfaceFormat::setDefaultFormat(surfaceFormat);
} 

用类似的方法我们还可以设置双缓冲,等等。

注意:QSurfaceFormat format of the QOpenGLContext instance after its creation is unfortunately not matching the actual format used internally.

留坑:听说多个 QGLWidget 会出现诡异的问题,改天来琢磨一下。

References

OpenGL VSync problem | Qt Forum

如何在opengl中启用垂直同步? - Code Examples (code-examples.net)

QSurfaceFormat Class | Qt GUI 5.15.1 - 中文文档编制,帮助,手册,教程 (digitser.net)

OpenGL VSync problem | Qt Forum

相关文章: