QXcbIntegration:无法创建平台 OpenGL 上下文,GLX 和 EGL 均未启用

Posted

技术标签:

【中文标题】QXcbIntegration:无法创建平台 OpenGL 上下文,GLX 和 EGL 均未启用【英文标题】:QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled 【发布时间】:2015-06-28 19:20:06 【问题描述】:

我有一个用 QT 和 OpenGL 构建的 unix 二进制文件,我试图在 linux-64 上执行它。这是一个简单的可视化程序,显示 2d 和 3d 图形。

我已经安装了所有必要的依赖项,例如 QT 和 openGL 库。 但是,我在尝试执行二进制文件时遇到了以下错误

QXcbIntegration:不能创建平台 OpenGL 上下文,GLX 也不能 也没有启用 EGL

但是,二进制文件最终会运行,但缺少一些功能,例如 3D 图形。

我的设置包括:使用 virtualBox、Vagrant、x-11 转发和 Mac 机器的虚拟 linux-64。

【问题讨论】:

尝试运行glxinfo。如果它告诉您启用 3D 加速,您可能必须关闭 virtualBox 才能更改设置。 glxinfo 显示日志。我相信启用了 3d 加速。 (不过直接渲染设置为NO,不确定是否相关)。 “但是,二进制文件最终会运行” 所以这不是错误,它只是一个警告。而且由于您没有直接渲染,因此您不能使用任何 OpenGL 渲染(2D 或 3D)。 我想间接渲染正在被强制执行,并且 OpenGL 应该仍然可以工作(可能更慢)。但是,我尝试通过重新安装驱动程序来强制执行直接渲染,但仍然没有成功。 【参考方案1】:

最终我意识到 OpenGL 3.3 不能在虚拟机上轻松运行......但是。我必须从 ubuntu usb 启动并通过安装最新的 mesa 3d 包从那里工作。

【讨论】:

【参考方案2】:

This 显示了类似的问题,评论中的开发人员说our 3D support is not very clean in Linux guests, hence the warnings。你可以试试VMware。

【讨论】:

感谢您的提示。最终我意识到 OpenGL 3.3 还不能在虚拟机上运行。我必须从 ubuntu usb 启动并从那里工作。【参考方案3】:

在尝试让一些 opengl 在特定锁定的 linux 机器上工作一段时间后,我最终回到了 Qt Creator 2.5.2。

http://download.qt.io/archive/qtcreator/2.5/

http://download.qt.io/archive/qtcreator/2.5/qt-creator-linux-x86_64-opensource-2.5.2.bin

在linux盒子上搞定后...

chmod u+x *.bin
./qt-creator-linux-x86_64-opensource-2.5.2.bin

经过一个简短的安装程序后,Qt Creator 就可以工作了!

基本上,QtQuick 是在 2.5(又名 Qt 5.x)之后构建的任何 Qt Creator 中的要求,并且 QtQuick 需要 opengl 库和支持。

希望对您有所帮助。

【讨论】:

【参考方案4】:

我在执行 Qt App 时看到了这个问题,我是在破折号提示下执行的。 (Ubuntu 16.04 默认有破折号)。我更改为 bash 提示符并重建了我的 QT 应用程序。这个错误消失了。 要配置 bash,我使用了以下命令。

sudo dpkg-reconfigure dash

【讨论】:

以上是关于QXcbIntegration:无法创建平台 OpenGL 上下文,GLX 和 EGL 均未启用的主要内容,如果未能解决你的问题,请参考以下文章

G019-OP-INS-RHEL-01 PackStack 安装 RedHat OpenStack

OP-TEE xtest 功能记录

IMX6UL EVK OP-TEE SET TZASC ENABLE

IMX6UL EVK OP-TEE SET TZASC ENABLE

为啥按值捕获 std::istringstream 的右值的 Op 无法满足 Accumulateable 概念?

InvalidArgumentError:无法将张量添加到批次:元素数量不匹配。形状是:[张量]:[4],[批次]:[5] [Op:IteratorGetNext]