背景
垂直同步: 只有在显示器刷新时,才把绘制好的图象传输出去供显示。
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)