0
我使用了QWidget到QOpenGLWidget轉換一些代碼,我想使用雙緩衝來渲染插件,到目前爲止:Qt的雙緩衝行爲
void clsElevStrip::initializeGL() {
qDebug() << "clsElevStrip::initializeGL()";
initializeOpenGLFunctions();
//Get the openGL context
mpobjContext = context();
if (mpobjContext != NULL) {
//Setup surface
mobjFormat.setDepthBufferSize(24);
mobjFormat.setSamples(4);
mobjFormat.setVersion(3, 0);
mobjFormat.setProfile(QSurfaceFormat::NoProfile);
mobjFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
int intSB = (int)mobjFormat.swapBehavior();
qDebug() << "swapBehavour as set-up in format: " << QString::number(intSB);
mpobjContext->setFormat(mobjFormat);
intSB = (int)mpobjContext->format().swapBehavior();
qDebug() << "swapBehavour as set-up in context: " << QString::number(intSB);
}
}
我可以在intSB爲2時,調試器看到檢查交換行爲從格式,但當我檢查intSB設置在上下文中它是0,而不是2?
由於我呈現給上下文的任何東西都是可見的。
您正在嘗試設置已創建的上下文的格式。我不認爲這會[工作](http://doc.qt.io/qt-5/qopenglcontext.html#setFormat)。假設'clsElevStrip'繼承自'QOpenGLWidget',請嘗試在'clsElevStrip'構造函數中調用['QOpenGLWidget:; setFormat'](http://doc.qt.io/qt-5/qopenglwidget.html#setFormat)。 –
這是從在線示例中複製的,如果它不可能,那麼setFormat方法有什麼意義? QOpenGLWidget :: setFormat不允許提供上下文,所以如何工作? – SPlatten
http://doc.qt.io/qt-5/qopenglcontext.html#setFormat – SPlatten