imx6ul Qt运行qml报错This plugin does not support createPlatformOpenGLContext!

imx6ul运行qml的Qt程序报错This plugin does not support createPlatformOpenGLContext!

1、开发环境

主板:imx6ul

Qt版本:5.9.6

文件系统:buildroot

问题描述:现需要在现有的文件系统中的Qt环境运行qml程序

2、问题复现

运行一个Qt自带的例程程序虚拟键盘输入Demo程序:basic

将basic程序交叉编译后放至imx6ul板子端运行,报以下错误:

bash 复制代码
root@imx6ul:~# ./basic
evdevtouch: /dev/input/event0: Invalid ABS limits, behavior unspecified
This plugin does not support createPlatformOpenGLContext!
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 1, profile  QSurfaceFormat::OpenGLContextProfile(NoProfile))
Aborted

这个错误大概是由于imx6ul本身是不带用GPU功能的,所以只能使用linuxfb插件,也就是说软件渲染。如果是使用qml去编写程序,需特别注意不能使用到Quick2。

3、解决办法

1、在Qt源码编译的时候,可以增加一个编译选项-no-opengl,这样就可以确保编译之后 不带有opengl的相关库,比如QtGraphicalEffects模块就不会再编译出来。

第一种方法

bash 复制代码
./configure -release \
	-xplatform linux-arm-gnueabi-g++ \
	-no-dbus \
	-no-opengl\    //添加此选项
	-prefix /home/hyb/qt-everywhere-opensource-src-5.9.1/arm-qt \
	-opensource -confirm-license -make libs \
	-nomake tools -nomake examples -nomake tests \
	-skip qt3d -skip qtandroidextras -skip qtcanvas3d \
	-skip qtconnectivity -skip qtdatavis3d -skip qtdoc \
	-skip qtgamepad -skip qtimageformats -skip qtlocation \
	-skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtsensors \
	-skip qtserialbus -skip qtspeech  -skip qttools -skip qtwebchannel \
	-skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras \
	-skip qtx11extras -no-feature-iconv -no-feature-gestures -no-qml-debug \
	-I/opt/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include

第二种方法

如果在第一种方法的前提下不加-no-opengl这个编译选项的话,在板子端执行大概率会报上述basic运行的错误,在查看Qt官网的相关资料,发现可以配置为软件渲染,通过设置环境变量来实现。

LinuxFB

This plugin writes directly to the framebuffer via Linux's fbdev subsystem. Only software-rendered content is supported. Note that on some setups the display performance is expected to be limited. To use Qt Quick applications with this platform plugin, the software scenegraph backend must be used, either by setting QT_QUICK_BACKEND=software in the environment, or by calling setGraphicsApi() with QSGRendererInterface::Software. QWidget applications, or QWindow with a surface type of QSurface::RasterSurface, are supported, but this does not include special widgets such as QOpenGLWidget.

bash 复制代码
export QT_QUICK_BACKEND="software"

4、结论

通过以上方法后,basic的虚拟键盘程序就可以正常运行了。

相关推荐
晗夜未央33 分钟前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>36 分钟前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
努力努力再努力wz1 小时前
【Lua 入门系列】Lua 函数深入理解:函数对象、多返回值、可变参数、闭包、递归与尾调用优化
开发语言·lua
飞浪纪元[FWC–FE]2 小时前
从零到一键绿:Qt 5.14.2 + VS2019 开发环境搭建、Kit 套件配置与构建错误修复完全手册
开发语言·qt
Wang's Blog2 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
我命由我123452 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
架构师伯子明2 小时前
FFmpeg C++学习(一):编译和demo
开发语言·c++·学习
海域云SeaArea_2 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php
叼烟扛炮2 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
xixingzhe22 小时前
图表中同比与环比的区别:看趋势还是看变化?
开发语言·python