首页 > 其他分享 >一文帮你全面认识方天视窗引擎

一文帮你全面认识方天视窗引擎

时间:2023-07-29 17:01:39浏览次数:25  
标签:窗口 一文 渲染 视窗 Server FangTian 引擎


2023年5月份,openEuler 正式成立 FangTian SIG。FangTian SIG聚焦FangTian视窗引擎,包含显示服务,窗口管理,图形绘制、合成、送显等模块,同时推出新型FT显示协议,探索解决Linux桌面环境体验不佳的问题

经过2个多月的开发、调试,FangTian SIG已在设备上流畅地运行Demo应用。本文将为大家介绍FangTian SIG最新进展,同时对FangTian视窗引擎做个全面解读。

FangTian SIG的进展

方天视窗引擎(下面简称方天引擎)已在设备上流畅的运行Demo应用:

一文帮你全面认识方天视窗引擎_linux

具体效果如上图所示:该Demo实现了3个窗口,其中包括两个clock窗口和一个背景窗口,用户可以通过控制鼠标,实现对窗口的拖动及缩放操作。

该Demo展示了方天视窗引擎窗口创建、销毁、层叠、多窗口等基础功能,以及对输入事件进行识别、分发的能力,并能通过鼠标实现窗口移动、缩放等操作;FangTian SIG将聚焦视窗引擎,持续为用户带来的全新显示体验。

方天引擎的全面认识

一文帮你全面认识方天视窗引擎_开源_02

方天引擎主要专注于视窗显示和视窗管理两个部分。这里从软件架构及协议两个方面介绍方天引擎:

1、方天引擎整体架构为C/S架构, FangTian Client为应用开发者或者GUI框架开发者提供API,开发者可以通过API调用对应的服务能力,例如:申请Surface、控制窗口位置大小、获取外设输入等。FangTian Server是视窗显示和视窗管理能力的核心,FangTian Server包含2个服务:

视窗显示服务,提供Buffer分配轮转、Vsync、渲染、合成、显示等能力。通过数据驱动接口及统一渲染架构,达成方天引擎的高性能、低内存的目标。

视窗管理服务,提供窗口的创建、销毁、移动、缩放、布局等能力。通过独立的窗口策略模块,适应移动端、PC端等多种设备的多种场景。

方天引擎除了自身包含的视窗显示服务、视窗管理服务外,还需依赖输入管理服务。它将提供输入管理服务,提供输入设备管理及输入事件的识别及分发操作的功能,实现对触摸屏、鼠标、键盘、触摸板等多种外设的统一管理,用于适配简化多模输入交互场景。

2、Client与Server之间通过FT协议进行交互, 主要特点是提供统一渲染及数据驱动接口,用于降低渲染负载,减少跨进程数据的交互量,提升应用的动画能力和性能。

FT协议主要包含基本的窗口协议、自绘制协议、统一渲染协议三个部分。下面主要介绍自绘制协议及统一渲染协议:

一文帮你全面认识方天视窗引擎_操作系统_03

自绘制,也叫直接渲染(direct rendering),表示应用直接使用CPU或者GPU完成图像渲染,将渲染后的数据通过Buffer共享到Server端。方天引擎中自绘制接口将Surface(包含Buffer的句柄)发送到Server端,Server端直接使用渲染好的数据进行合成。自绘制的好处是天生的并行性,应用之间的渲染可以互不打扰、同时并行。

统一渲染,与自绘制模式不同,C/S之间传递的不是Surface,而是2D绘制指令。在Server中,会将不同应用传递过来的2D指令进行统一绘制。统一渲染的优势是在渲染过程中能够充分利用窗口之间的遮挡信息,降低重复渲染。

方天引擎会结合使用上述两种渲染模式,后续会规划配合GUI框架实现渲染模式的统一调度,在保证性能的同时降低资源消耗。此外在统一渲染模式下,方天引擎将新增数据驱动的能力,每帧之间只需要发送对应变化信息,降低指令处理及渲染负载。

总结

方天引擎作为全新的一套视窗引擎,在为应用提供视窗显示能力的同时,提出新的FT协议,采用自绘制+统一渲染架构以及数据驱动表达,降低Cilent与Server之间交互数据量,达到性能、内存、功耗等各方面的提升。这使得方天引擎既适用于PC、服务器场景,也适用于移动设备场景。


标签:窗口,一文,渲染,视窗,Server,FangTian,引擎
From: https://blog.51cto.com/u_14948868/6893764

相关文章

  • 一文讲解API网关核心功能——就是nginx,无非加入了安全、流控、转换、版本控制等功能
    一文讲解API网关核心功能【编者的话】本文详细讲解了API网关的基础概念,使用场景和核心功能,以及基于API网关核心引擎做的API全生命周期管理功能扩展等,最好再介绍下当前主流的开源API网关引擎。API网关概述在微服务架构体系里面,我们一般会使用到微服务网关或叫API网关。大家都比较清......
  • 稳扎稳打,坚定前行 | 一文带你回顾 StoneDB 的 2022 年
    2022年6月29号,StoneDB正式宣布开源,自开源以来,StoneDB开源团队在用心打磨产品的同时,也在积极地拥抱开源社区,与万千数据库开发者共同成长,我们从day1就励志要做一款立足中国、面向全球的开源数据库,内核代码已经在Github上完全开源,欢迎大家前往关注:https://github.com/stone......
  • 一文带你搞定Maven全功能
    在一次需求迭代中,同事要求我把写好的RPC接口打好包上传到公司私服上,我人直接当场懵逼住了。突然发现自己对于Maven仅仅是处于最基础的使用阶段,不仅不知道背后的一些原理,甚至连一些常见的概念都不是很清晰,仅仅会使用Maven构建项目,引入依赖,打包等最基础的操作,所以连忙补补课,成功完成......
  • 传奇服务端Gom引擎补丁不显示外观的解决办法
    gom引擎的服务端出线了打好补丁安装好显示还是透明,这种情况是安装目录出现了问题。 第一步确定一下版本补丁的安装路径。 一种就是常见的安装方法,X:\热血传奇\data\这种就是最常见的,很多人往往就塞这里面去。 一种就是Gom引擎的版本安装方式:因为很多版本制作者命名自己的补丁文......
  • LibGdx 游戏引擎 freetype 使用指南
    网上大多数的Libgdx文档,使用的版本都是0.9X的时候留下的,1.X版本的比较少。freetype在1.X时使用发生发生了变化,写一下变化。本人使用的是Libgdx1.6版本。首先给两个传送门,可以去Git上看官方的wiki。官方的freetype说明https://github.com/libgdx/libgdx/wiki/Gdx-freetype官方的......
  • 【杂谈】基于虚幻引擎合成大西瓜小游戏开发思路
    游戏玩法:不同的物体进行自由落体当两个相同的物体发生触碰事件的事件,结合在一起,两者结合,变成一个更大的物体,依次类推。开发思路:定义一个枚举来定义物体的属性,类似与一级、二级、三级、四级.......构建一个物理框架,使物体在里面自由落体,在框架上分的正中间,标记一个目标点,将目标点的......
  • AIRIOT可视化组态引擎如何应用于物联业务场景中
    在物联网的业务应用场景中,可视化组态是一个必不可少的功能需求。不同的行业场景,都需要将物联设备采集的数据和业务场景状态进行直观的可视化展示,供使用者进行分析或决策。如工艺流程用能监测、3D场景构建、能耗趋势场景报警联动、重点设备视频接入、重点数据移动监测、计划用能终......
  • 香港中文大学多媒体实验室——人工智能与计算机视觉的创新引擎
    原创|文BFT机器人01引言香港中文大学多媒体实验室(MultimediaLaboratory)成立于2001年7月,是香港中文大学信息工程学系的重要组成部分。该实验室由汤晓鸥教授执导,是最早应用深度学习进行计算机视觉研究的华人团队之一。因其卓越的贡献,该实验室被誉为“计算机视觉界的黄埔军校”。02......
  • 开发必看!一文读懂Salesforce测试策略实用建议!
    可靠的测试策略是确定重大决策的关键工具,以便参与测试的人员能够做出符合共同目标的决策。测试软件的次数越多,就越能从制定高级计划中受益。本文将详细介绍测试策略,以及如何建立测试策略的实用建议。01什么是测试策略?测试策略,是测试过程的战略布局,是指导测试过程设计和进行的......
  • Drools规则引擎学习(一)
    全称为业务规则管理系统,英文名为BRMS(即BusinessRuleManagementSystem)。规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模板编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。需要注意的的规则引擎并不是一个具体的技术框架,而是指的一类......