0
私はQOpenGLWidgetにQWidgetのを使用してからいくつかのコードを変換しています、私はこれまで、ウィジェットをレンダリングするためにダブルバッファリングを使用したい: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をコンテキストに設定されているかどうかチェックすると、2ではなく0になります。
この結果、コンテキストにレンダリングするものはすべて表示されます。
すでに作成されているコンテキストの形式を設定しようとしています。私はそれが[働く]とは思わない(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