我发现如果我(在进行任何QPainter绘图之前在我的小部件中的某个地方)运行以下代码:
if (!QOpenGLContext::currentContext())
{
QOpenGLWidget * open_gl_w = new QOpenGLWidget(this);
QSurfaceFormat format;
format.setSamples(5);
open_gl_w->setFormat(format);
open_gl_w->setUpdateBehavior(QOpenGLWidget::PartialUpdate);
open_gl_w->setGeometry(0, 0, 20, 20);
open_gl_w->show();
delete open_gl_w;
}
然后以某种方式跟随QPainter(不是OpenGL,正常)的绘图性能显着增加。就像它绘制相对复杂的场景要快几倍于没有OpenGL引擎的奇怪初始化。
我应该补充说它只发生一次:下次运行代码时,currentContext()返回true。
当然我喜欢这个结果,但我也想知道发生了什么。