2 个版本

0.10.3 2022 年 1 月 17 日
0.10.2 2022 年 1 月 8 日

#709 in 图形API


用于 ivy-presets

自定义许可

510KB
13K SLoC

Ivy

是什么

Ivy 是一个用于 Rust 的模块化应用程序和游戏框架。

这个 crate 提供了多个 ivy crates 的合并、重导出以及别名。

指南

提供了一个用户指南,以快速让用户熟悉引擎的基本用法。

特性

  • Vulkan 高级渲染
  • PBR 渲染和后处理
  • 渲染图抽象
  • 碰撞检测和逼真物理响应
  • 由 ECS 驱动的架构
  • 使用观察者模式进行延迟动态事件
  • 对任意凸形状进行光线投射
  • 基于句柄的动态存储
  • 具有可组合向量生成的输入系统
  • 具有可配置小部件和定位系统的 UI 系统
  • ... 更多

画廊

Cubes and Collision

工作原理

程序的核心是一个应用程序。 [core::App]. 它定义了更新循环和事件处理。

从那里,逻辑被提取到层中,每个迭代都会运行这些层。在一个层中,用户可以自由地做他们想做的事情,从读取套接字,使用 Vulkan 进行渲染,到调度 ECS 工作负载。

由于分层设计,几个高级概念可以协同工作而不相互干扰,同时可以根据不同的配置进行插入。

层可以被视为高级容器中的行为插件。

层的存在允许从其他 crates 导入行为,而不必担心实现细节。

层间通信

应用程序公开了两种层可以相互影响的方式。

  • world 包含了包含所有实体和组件的 ECS 世界。
  • resources 是一种通过句柄访问的强类型存储。这对于存储要在层之间共享或在内层中具有动态借用检查的纹理、模型或单例很有用。
  • events 促进了广播通道,可以在其中发送和监听事件。每个层都可以设置接收器并迭代特定类型的事件。这最适合用于低频数据以避免忙碌检查,如用户输入、状态变化等。

请参阅 [core::Layer]

依赖项

约26MB
约560K SLoC