#graphics #wgpu #gamedev #game-engine

kludgine-app

Kludgine的应用和窗口管理

13个版本 (4个破坏性更新)

0.5.0 2023年4月28日
0.4.0 2023年1月27日
0.3.1 2022年11月6日
0.2.0 2022年7月31日
0.1.0-dev.42021年10月31日

#942 in 游戏开发

MIT/Apache

1MB
6K SLoC

Kludgine

为Rust语言设计的2D渲染引擎。

Kludgine is considered experimental crate version Live Build Status HTML Coverage Report for main branch Documentation for main branch

Kludgine的命名可能带有讽刺意味,但它是由一个对现代图形编程和Rust相对较新的开发者设计和编写的。因此,它可能是一个修补程序

为什么使用Kludgine?

Kludgine处于早期开发阶段,API可能会发生破坏性更改。尽管如此,API已经开始稳定,以下是Kludgine的主要优点:

快速且高度可移植

Kludgine建立在easygpu之上,它基于wgpuwgpu是一个实验性的WebGPU实现,它支持Windows上的DirectX、Linux上的Vulkan、iOS/Mac OS上的Metal,并且几乎可以在浏览器中工作。Kludgine目前还不能在浏览器中工作,但我们将最终支持它。

在Kludgine中编写的应用程序和游戏应在预算硬件上运行良好,即使没有独立GPU。

智能重绘

虽然大多数游戏希望有一个稳定的帧率,但许多开发者可能希望允许他们的程序不会不断重绘。Kludgine通过RedrawStatus类型使管理这一点变得简单,允许轻松安排未来的帧重绘或立即请求重绘。

如果您希望进行一致的重绘,请实现Window::target_fps

多窗口支持

Kludgine支持多窗口。一般来说,大多数游戏不需要多个窗口,但通用应用程序需要。

易用性

这有点模糊,但包括以下内容:

  • 人体工程学和一致的API:这是一个正在进行的工作,但目标是实现一致的设计,易于阅读和编写。
  • 模块化设计:Kludgine 开始成为一个大型引擎,但在创建 Gooey 的过程中,这个 crate 成为了一个更精简的渲染和窗口化 crate。它将继续进化,使其能够独立使用,或在其他 wgpu 应用程序中使用,或作为 Gooey 的前端。
let texture = Texture::load("kludgine/examples/assets/k.png")?;
let sprite = SpriteSource::entire_texture(texture);
sprite.render_at(
    scene,
    Rect::from(scene.size()).center(),
    SpriteRotation::around_center(self.rotation_angle),
);

要查看如何使用 Kludgine 的各种功能的示例,请参阅存储库中的 kludgine/examples 文件夹。如果您遇到问题,请确保您查看的是 Kludgine 正确版本的示例。如果您使用的是发布版本,请切换到查看该版本标签的存储库。

入门指南

要使用 Kludgine,请将其添加到您的 Cargo.toml

cargo add kludgine

关于

此项目由 Khonsu Labs 开发,并用于 Cosmic Verge。我希望它对其他人也很有用。

此代码采用双许可协议,受 MIT 许可证Apache License 2.0 的保护。此存储库中的字体默认不包含在内,且仅根据 Apache License 2.0 许可证 许可。

依赖关系

~30–67MB
~1M SLoC