2017-12-20 15 views
1

MacOSでQOpenGLDebugLogger機能を使用したいと考えています。私はので、ここで特定のQOpenGLContextを作成しなければならなかったことを理解MacOSでQOpenGLDebugLoggerを使用する

は私のカスタムQOpenGLWidgetクラスのコンストラクタで私のコードです:

QSurfaceFormat format; 
format.setMajorVersion(3); 
format.setMinorVersion(2); 
format.setOption(QSurfaceFormat::DebugContext); 
format.setProfile(QSurfaceFormat::CoreProfile); 
QSurfaceFormat::setDefaultFormat(format); 

は残念ながら、それは私が作成した現在のコンテキストには影響を与えませんQOpenGLWidget

qDebug() << QOpenGLContext::currentContext()->hasExtension(QByteArrayLiteral("GL_KHR_debug")); 

は私がQOpenGLContextバージョンが2.1であることを常にらしいことに気づいた:私のinitializeGLに次のコードは、()オーバーライドメソッドはfalseを出力し

qDebug() << QOpenGLContext::currentContext()->format().majorVersion() << QOpenGLContext::currentContext()->format().minorVersion(); 

任意のアイデアなぜ設定コンストラクタの形式は何の効果もありませんか?

+0

は、私が最初にそれは私がちょうど編集をした成功 –

+1

せずにMacOSのデスクトップのOpenGLで動作させるためにしようとしているだろう! –

+0

[ここで(3番目のコードブロック)](http://doc.qt.io/qt-5/qopenglwidget.html#)のように、 'QSurfaceFormat :: setDefaultFormat'ではなく' QOpenGLWidget'の 'setFormat'を呼び出そうとしましたか?詳細) – BDL

答えて

1

QOpenGLWidgetのコンストラクタから特定のOpenGLコンテキストバージョンを要求する正しい方法は、QOpenGLWidget::setFormat(..)メソッドを呼び出すことです。また、KHR_DEBUGはOpenGL 4.3 Core Profileに導入されているので、その前にこの機能を使用することは不可能かもしれません。 OpenGLの4.3デバッグコンテキストの正しいセットアップコードは、実際には

QSurfaceFormat format; 
format.setMajorVersion(4); 
format.setMinorVersion(3); 
format.setOption(QSurfaceFormat::DebugContext); 
format.setProfile(QSurfaceFormat::CoreProfile); 
setFormat(format); 
+0

このコードは4.1のバージョンのOpenGLコンテキストにつながります... –

+0

あなたのハードウェアは4.3をサポートしていますか? – BDL

+0

どうすればわかりますか? –

関連する問題