QXcbIntegration:无法创建平台的OpenGL上下文

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. 
+0

您可以检查哪些功能在log.do_configure启用(在它的最后)你的qtbase构建。很可能你会发现egl没有启用。在你的qtbase配方中,你可以找到你可以通过packageconfig变量激活的不同功能。最简单的(快速和肮脏的)方式可能只是通过附加到packageconfig变量来创建qtbase.bbappend配方,然后添加所需的功能。应该看起来有点像:'PACKAGECONFIG + =“eglfs”'(注意字符串开头的空格) – PeterErnsthaft

+0

您确定在X11窗口系统中使用'eglfs'是否正确? –

+1

我不完全相信它是“正确的”,正如我所提到的,这是一种可以尝试的快速和肮脏的方式。如果它有效,你已经缩小了问题范围,如果你有时间,你可以采取更复杂的方法。 – PeterErnsthaft

这是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寻求答案。我试过你的解决方案,但它不起作用,你知道为什么吗? –