1. 简介 1
  2. SylixOSFB 1
    2.1 插件的初始化 1
    2.2 窗口绘制 1
    2.3 SylixOSFB的实现 2

1.简介
Qt是目前一款比较主流的人机交互界面库。它有很强的跨平台能力,可移植性好,被广泛应用在PC端以及嵌入式领域。Qt可大致分为两部分:QtGui和QtCore,QtGui提供开发人员一套完整的开发控件,可以快速开发客户端界面;QtCore则负责底层渲染以及事件驱动等。而本章节主要介绍的是Qt的渲染机制,在Qt5中将底层渲染和窗口管理大致分为:
SylixOSFB、LinuxFB、KMS、XCB、Wayland。
SylixOSFB和LinuxFB采用相同的渲染方式:直接往FrameBuffer写像素值,这种方式只支持软件渲染,主要使用CPU读写内存的方式。通过设置环境变量QT_QPA_PLATFORM=sylixosfb:fb=/dev/fb0和在程序启动时添加-platform sylixosfb两种方式运行Qt程序。
KMS:利用内核配置模式和drm机制,配合egl-device实现的带有GPU加速模式。
XCB:是在X11窗口管理系统嵌入OpenGL渲染模式
Wayland:是一套轻量级的窗口管理系统,采用传统的C/S框架,可以实现基于FrameBuffer和OpenGL两种渲染方式。
2.SylixOSFB
2.1插件的初始化
SylixOSFB遵循QPA插件接口规范,在Qt程序初始化时,初始化平台管理窗口、事件分发、鼠标键盘输入管理、Screen屏幕绘制。如图 2.1所示

图 2.1 插件初始化
2.2窗口绘制
在SylixOSFBScreen中通过打开fb0设备获取屏幕信息,再通过mmap内存映射,刷新屏幕像素值。如图 2.2所示

图 2.2 FrameBuffer读写实现
2.3SylixOSFB的实现
下图是SylixOSFB插件和QtGui层交互流程图。如图 2.3所示

图 2.3 SylixOSFB交互流程

转载于:https://blog.51cto.com/9508662/2334714

【SylixOS】Qt 基于FrameBuffer渲染界面相关推荐

  1. QT 基于QScrollArea的界面嵌套移动

  2. python framebuffer gui_基于Framebuffer的嵌入式GUI系统实现

    摘要:本文研究了基于Framebuffer的嵌入式GUI的系统实现,包括其体系结构层次的建立.驱动机制的分析.微型客户端/服务器模式的实现,以及基于Framebuffer的GAL与GDI的设计等关键内 ...

  3. 基于qml创建最简单的图像处理程序(1)-基于qml创建界面

    <基于qml创建最简单的图像处理程序>系列课程及配套代码 基于qml创建最简单的图像处理程序(1)-基于qml创建界面 http://www.cnblogs.com/jsxyhelu/p/ ...

  4. 在Ubuntu中用Qt基于OpenCV调用大恒相机

    在Ubuntu中用Qt基于OpenCV调用大恒相机 前言 视觉萌新买了工业相机却不会用,上网也查不到具体方法,没办法只能自己硬刚了.刚开始自己摸索,碰到好多问题解决不了,Qt报错不知道咋回事,缺少的链 ...

  5. QT: 基于QT和嵌入式的视频监控系统

    [摘 要]为了降低视频监控系统的成本,提高系统布防的简易性,使其具有较好的稳定性和实时性,利用QT 设计了一款基于嵌入式视频服务器的监控系统.系统采用三星公司的S3C2440 微处理器芯片为核心的AR ...

  6. 基于framebuffer(fb)的驱动分析

    基于framebuffer的驱动分析 framebuffer帧缓冲(简称fb)是linux内核中用代码虚拟出的一个设备,是一个platform类型设备,设备文件位于/dev/fb* 在嵌入式系统中一般 ...

  7. React 回忆录(三)使用 React 渲染界面

    Hi 各位,欢迎来到 React 回忆录!? 在上一章中,我介绍了 React 框架的"五大特点":虚拟DOM,组件化,声明式代码,单向数据流和纯粹的 JavaScript 语法. ...

  8. 基于python的界面自动化测试-Python实现性能自动化测试竟然如此简单

    一.思考❓❔ 1.什么是性能自动化测试? 性能系统负载能力超负荷运行下的稳定性系统瓶颈自动化测试使用程序代替手工提升测试效率性能自动化使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数, ...

  9. Element-UI 的基本使用||基于图形化界面自动安装

    Element-UI 的基本使用 Element-UI:一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库. 官网地址为: http://element-cn.eleme.io/ ...

最新文章

  1. AI化身监工,上班还能摸鱼吗?
  2. PCL1.8.1安装和一些小错误
  3. LeetCode之Sort List
  4. 下列代码的执行结果是 php,执行下列代码后的结果是: $x=15; echo $x++; $y=20; echo ++y;...
  5. SqlServer 2008 R2定时备份数据库,并且发送邮件通知
  6. 类加载器源码、双亲委派、自定义类加载器详解
  7. Jerry本地安装SAP Kyma的一些失败尝试
  8. Ubuntu 安装 Vue.js
  9. 大道至简读书笔记(1)
  10. vip forum.php,DZ论坛突破VIP回复查看内容
  11. Eclipse SVN还原文件到历史版本详解
  12. 淘客发单机器人wztools_在淘客的迷茫中,拼多多给了我一丝光明
  13. 机器学习——基本原理
  14. 特朗普启动美国AI国家计划,人工智能角逐再添新变化!
  15. x的x分之一次方极限x趋于0_e的x分之一的左右极限
  16. 计算机保存途径如何更改,如何修改“我的文档”路径方便保存文件
  17. python中字符串的使用04字符串大小写转换、删除空白字符
  18. 微信支付 postman_微信刷脸支付补贴政策有哪些?
  19. Oracle EBS 付款后无法创建会计科目
  20. linux ar -x64,Linux ar 命令 command not found ar 命令详解 ar 命令未找到 ar 命令安装 - CommandNotFound ⚡️ 坑否...

热门文章

  1. php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
  2. greenplum 单表 数据扫描
  3. php mysql_affected_rows获取sql执行影响的行数
  4. learn go ifelse
  5. DOM(十四):代理检测和事件处理(跨浏览器)
  6. 经典排序算法 - 归并排序Merge sort
  7. 惠普企业:自今年10月起,固件 bug 将导致某些 SSD 不可用
  8. Android P Beta 3 现已发布!
  9. 不可不知的 Android strings.xml 那些事
  10. 听飞狐聊JavaScript设计模式系列11