自渲染引擎(施工中)
划分多个层次拼凑起整个流水线
ui线程,js实现。包含整个Framework内容
- 基础组件: text,image,list,scroll
- 引入前端技术:dom 和 style,例:Vue等dsl技术
- 动画
- 手势
- 键盘/鼠标等输入
渲染线程,一般也是主线程,C++实现。负责bgfx调用,布局计算等。另外还有一个io线程,进行图片的编解码,上传图片数据到gpu,和主线程共享gpu context
- 布局: 不同的是android的底层实现,将这部分划分在Framework中,而flutter划分到engin层,目前觉得划分在Framework中最利于实现,但是性能未必最优
- 调用bgfx渲染
解决跨平台问题,进行事件对接, Surface 对接,以及 Native 平台接口调用的插件机制。
- VSync信号:传递到Framework
- 输入管理模块,用来获取用户输入
- 策略模块,用来执行策略
- 场景管理模块,用来管理场景和更新场景
- 渲染模块,用来执行渲染和画面输出
- 音频音效模块,用来管理声音,混音和播放
- 网络通信模块,用来管理网络通信
- 文件I/O模块,用来管理资源的加载和参数的保存回复
- 内存管理模块,用来调度管理内存上的资源
- 驱动模块,用来根据时间,事件等驱动其它模块
- 辅助模块,用来执行调试,log输出等辅助功能
- 应用程序模块,用来抽象处理配置文件,特定平台的通知,创建窗口等需要与特定平台对接的部分
游戏引擎(狭义)一般来讲包括:图形渲染系统,物理系统,粒子特效系统,角色骨骼系统,动画系统,场景管理,界面模块,脚本接口,音频网络接口,资源管理,模型和纹理动态加载等,AI模块,内存管理,本地化支持,视频嵌入纹理,以及动态更新模块等等。。。。具体见:Game engine - Wikipedia 广义的游戏引擎还包括各种周边编辑器,特效编辑器,粒子编辑器,UI编辑器,场景编辑器,骨骼动画编辑器。如今越来越多的游戏引擎提供了所见即所得的关卡编辑功能。角色一边在里面和真实情况一样奔跑,一边就可以增加关卡内容和触发器。
所有的模块都是用ECS写法,这样可以带来统一的扩展手段
- bgfx:底层渲染库,跨平台
- yoga:facebook的排版引擎
- openal-soft:openal的软实现
- glfw : 窗体事件等
- glad : 封装opengl,由于bgfx的原因,大概率用不到
- mio : 内存映射
- litehtml:html 和 css
- skia:google的2d渲染库,android就是用他
- nodejs / nodejs-mobile:脚本引擎
- ozz-animation:动画库
- gumbo-parser/node-gumbo-parser:google的html解释库及第三方的nodejs实现
- 跨平台图形渲染引擎bgfx分析
- 大比拼 | 下一代高性能跨平台UI渲染引擎
- 跨平台渲染引擎之路:拨云见日
- 游戏引擎中的渲染管线
- 跨平台渲染引擎之路
- CMake 入门实战
- HTML解析库Gumbo简单使用记录
- Flutter 实战入门
- 手把手教你实现一个浏览器引擎
- 手把手教你Vue从零撸一个迷你版MVVM框架
- 将 Vue 渲染到嵌入式液晶屏
- 手把手教你打造一款轻量级canvas渲染引擎
- 由 FlexBox 算法强力驱动的 Weex 布局引擎
- 将你的 Virtual dom 渲染成 Canvas
- 60 FPS on the mobile web
- A Custom Renderer for Vue 3
- Writing a Custom Renderer - Vue.js 3
- 适用于 Linux 的 Windows 子系统安装指南 (Windows 10)