QXcbIntegration:无法创建平台的OpenGL上下文
问题描述:
我一直在试图QT5支持添加到使用Yocto的老板问起的Pyro上树莓派3QXcbIntegration:无法创建平台的OpenGL上下文
在我bblayer.conf一个core-image-sato
像我添加这些行:
BBLAYERS ?= " \
/poky-pyro/meta \
/poky-pyro/meta-poky \
/poky-pyro/meta-yocto-bsp \
/poky-pyro/meta-openembedded/meta-oe \
/poky-pyro/meta-openembedded/meta-multimedia \
/poky-pyro/meta-openembedded/meta-networking \
/poky-pyro/meta-openembedded/meta-perl \
/poky-pyro/meta-openembedded/meta-python \
/poky-pyro/meta-raspberrypi \
/poky-pyro/meta-qt5 \
"
在我的local.conf我添加这些行:
DISTRO_FEATURES_append = " opengl "
IMAGE_INSTALL_append = " qtbase qtdeclarative qtquickcontrols2 qtmultimedia qttools cinematicexperience "
BitBake的成功完成建设中的形象,但是当我在目标上运行Qt5_cenimaticExperience我得到个是错误消息:
QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled.
答
这是Qtbase的默认配置,并根据您拥有的一切:
PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)}"
PACKAGECONFIG_DEFAULT ?= "dbus udev evdev widgets tools libs freetype tests"
PACKAGECONFIG_SYSTEM ?= "jpeg libpng zlib"
正如你所看到的,我们只启用-opengl desktop
;我们需要的是嵌入式系统的opengl es2
。
要纠正这一点,这一行添加到您的local.conf
:
PACKAGECONFIG_append_pn-qtbase = " gles2 "
顺便说一句,这是我qtbase配置:
PACKAGECONFIG_append_pn-qtbase = " gles2 fontconfig \
gstreamer \
accessibility \
tslib examples \
"
+0
谢谢@Charles寻求答案。我试过你的解决方案,但它不起作用,你知道为什么吗? –
您可以检查哪些功能在log.do_configure启用(在它的最后)你的qtbase构建。很可能你会发现egl没有启用。在你的qtbase配方中,你可以找到你可以通过packageconfig变量激活的不同功能。最简单的(快速和肮脏的)方式可能只是通过附加到packageconfig变量来创建qtbase.bbappend配方,然后添加所需的功能。应该看起来有点像:'PACKAGECONFIG + =“eglfs”'(注意字符串开头的空格) – PeterErnsthaft
您确定在X11窗口系统中使用'eglfs'是否正确? –
我不完全相信它是“正确的”,正如我所提到的,这是一种可以尝试的快速和肮脏的方式。如果它有效,你已经缩小了问题范围,如果你有时间,你可以采取更复杂的方法。 – PeterErnsthaft