10个重大版本发布
0.25.1 | 2024年6月11日 |
---|---|
0.24.0 | 2024年1月25日 |
0.23.0 | 2023年10月26日 |
0.22.0 | 2023年7月22日 |
0.15.0 | 2022年1月10日 |
#183 in GUI
每月下载量276次
在 7 个工具箱中(直接使用2个) 使用
2.5MB
50K SLoC
fyrox-ui
保留模式,通用,与图形API无关的用户界面库。灵感来源于WPF。
注意:尽管这个工具箱名称中包含 fyrox
前缀,但它可以独立使用,没有任何问题。
特性
- 超过28个小部件
- 完全支持TTF/OTF字体
- 强大的布局系统
- 完全可定制 - 你可以构建任何复杂度的视觉树:例如,树视图项可以有任意子小部件作为内容。
- 与GAPI无关 - 这个工具箱不了解任何渲染后端:它可以用于OpenGL、DirectX、Vulkan、Metal,甚至内置的操作系统绘制API。
- 与操作系统无关 - 所有操作系统和窗口管理器上的小部件具有类似的外观。
- 可扩展 - 完全支持用户定义的小部件。
小部件
- 按钮
- 边框
- 画布
- 颜色选择器
- 颜色字段
- 复选框
- 装饰器
- 下拉列表
- 网格
- 图像
- 列表视图
- 弹出窗口
- 进度条
- 滚动条
- 滚动面板
- 滚动查看器
- 堆叠面板
- 选项卡控件
- 文本
- 文本框
- 树
- 窗口
- 文件浏览器
- 文件选择器
- 停靠管理器
- 数值增减框
- Vector2/Vector3/Vector4编辑器
- 四元数编辑器
- 菜单
- 菜单项
- 消息框
- 包装面板
- 曲线编辑器
- 位字段
- 用户定义的小部件
- 检查器
限制
- 由于这个库是操作系统和GAPI无关的,它不能创建原生操作系统的窗口,并且不能在屏幕上渲染任何内容。取而代之的是,它使用一个内部的绘制缓冲区,其中包含一系列命令,这些命令必须在你游戏/应用程序中解释。这是一种非常灵活的方法,但它有一些限制:多窗口(原生)配置很难实现,你必须实现自己的UI渲染器,这可能很难,如果你不熟悉类似的东西。
- 仍然没有键盘导航,虽然计划了,但优先级不高。
- 不支持从右到左的文字(阿拉伯语、希伯来语等)
性能
- 总的来说,fyrox-ui运行速度快,但是使用不当时可能会变慢。由于这个库使用了一个非常复杂的布局系统,当有很多UI元素被移动时(例如,在滚动时),它可能会运行缓慢。希望它内置了布局缓存系统,并依赖于布局无效化,因此它不会在每一帧都进行布局计算 - 只在有显著变化时(位置、大小等)。
- 渲染命令批处理可能比较困难,因为这个库广泛使用了裁剪,每个裁剪几何体都需要作为独立的绘制调用绘制到模板缓冲区。渲染仍然需要优化,目前效率较低。
样式
fyrox-ui使用了一种不太常见的样式方法——您需要替换小部件视觉树中的整个子图。这意味着什么?fyrox-ui使用图来构建任何复杂性的视觉树,每个小部件是图中节点的一个集合。例如,按钮是一组背景和前景小部件,背景小部件通常定义外观,前景显示内容。按钮的内容可以是任何小部件,在大多数常见情况下,它是一个文本或图像。因此,要更改按钮的外观,您必须在构建阶段定义自己的背景小部件,fyrox-ui默认使用装饰器小部件,该小部件在接收到鼠标进入、鼠标离开等消息时仅更改其前景画笔。这一事实大大增加了对次要样式的复杂性(如更改颜色),但这是一种非常灵活的方法,允许构建独特的样式。大多数小部件构建器都提供了更改其部分的方法,其中一些可能仍缺乏此类功能,但最终应该会得到解决。
截图
贡献
- 为一个人编写用户界面库是非常具有挑战性的,因此任何帮助都将受到赞赏。
文档
待办事项。
示例
待办事项。
有两个项目使用这个UI库
然而,从这些项目中理解如何使用库可能太困难,因此需要添加独立示例。这仍然是一个待办事项。
依赖关系
~12–24MB
~361K SLoC