2017-12-20 7 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에서 다음 코드는() 오버라이드 (override) 메소드는 false를 출력

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

어떤 생각을 왜 설정의 오류 생성자의 형식은 아무 효과가 없습니까?

+0

내가 처음 난 그냥 편집을 만들어 성공 –

+1

없이 맥 OS 데스크탑 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 핵심 프로필에 도입되었으므로이 기능을 사용하기 전에 불가능할 수도 있습니다. 의 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

어떻게 알 수 있습니까? –