gpt4 book ai didi

c++ - QOpenGLWidget QT 请求上下文

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:29 25 4
gpt4 key购买 nike

我一直在使用带有 QOpenGLWindow 的着色器文件并使用版本 330 着色器,一切正常。但是想要切换为 Widget 以便能够将其停靠在我的应用程序主窗口中。从那以后,我一直在努力获得正确的上下文。

我能够使用 QGLWidget(我发现它已被弃用)创建正确的:

 QGLFormat format;
format.setProfile(QGLFormat::CoreProfile);
format.setVersion(3,3);
QGLFormat::setDefaultFormat(format);

但是,当我使用 QOpenGLWidget 做完全相同的事情时:我明白了

QOpenGLShader::compile(Vertex): ERROR: 0:1: '' :  version '330' is not supported

从某种程度上来说,QGLFormat 的管理不对新类负责是合理的。

但是在切换到新类(class)并设置核心配置文件后:

  QSurfaceFormat format;
format.setProfile(QSurfaceFormat::CoreProfile);
format.setVersion(3,3);
QSurfaceFormat::setDefaultFormat(format);

我喜欢上了:

0   libobjc.A.dylib                 0x00007fff89f9a0dd objc_msgSend + 29
1 libqcocoa.dylib 0x000000011085e3a3 QCocoaIntegration::createPlatformOpenGLContext(QOpenGLContext*) const + 83
2 org.qt-project.QtGui 0x000000010d2c954a QOpenGLContext::create() + 74
3 org.qt-project.QtWidgets 0x000000010cc35a6d QOpenGLWidgetPrivate::initialize() + 141
4 org.qt-project.QtWidgets 0x000000010cc36e58 QOpenGLWidget::event(QEvent*) + 232
5 org.qt-project.QtWidgets 0x000000010cbd632b QApplicationPrivate::notify_helper(QObject*, QEvent*) + 251
6 org.qt-project.QtWidgets 0x000000010cbd9648 QApplication::notify(QObject*, QEvent*) + 8136
7 org.qt-project.QtCore 0x000000010da59d83 QCoreApplication::notifyInternal(QObject*, QEvent*) + 115
8 org.qt-project.QtWidgets 0x000000010cc18879 sendWindowChangeToTextureChildrenRecursively(QWidget*) + 73
9 org.qt-project.QtWidgets 0x000000010cc03339 QWidget::setParent(QWidget*, QFlags<Qt::WindowType>) + 2217
10 org.qt-project.QtWidgets 0x000000010cbf4569 QLayout::addChildWidget(QWidget*) + 201
11 org.qt-project.QtWidgets 0x000000010cd1e740 QMainWindowLayout::setCentralWidget(QWidget*) + 32
12 ultrahaptics.Optimus_gui 0x000000010cb27f74 MainWindow::MainWindow() + 580
13 ultrahaptics.Optimus_gui 0x000000010cb2396b main + 59

我在 macbook pro 上使用 Os X。如果有人知道解决方法/原因,欢迎发表评论。

最佳答案

我在某处读到如果你在 OS X 上开发你的 OpenGL 程序(无论你使用什么平台:Qt Creator,XCode..),你将只能使用一个版本的 OpenGL 2.1 或 4.1 , 默认版本通常是 2.1因此,通过使用 setDefaultFormat,我们强制系统为我们初始化 OpenGL 4.1。

我已经上传了一个如何在 Mac 上使用 OpenGL 4.X 的示例。

QOpenGLWidget_OpenGL4.1

享受

关于c++ - QOpenGLWidget QT 请求上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com