#opengl #2d #graphic #2d-game #game #graphics #gust

nightly gust-render

Gust是一个受SFML启发的简单2D图形库

1 个不稳定版本

使用旧的Rust 2015

0.2.0 2018年11月30日

#66渲染引擎

自定义许可证

435KB
3.5K SLoC

Gust

Gust是一个使用简单OpenGL绑定和freetype-rs库编写的纯Rust图形库。Gust的目的是帮助我理解简单的计算机图形系统(2D),并让我处理这种复杂的语言——Rust。

哲学

Gust背后的哲学是在Rust中创建一个简单、优雅、安全且可靠的图形库。关键概念和限制如下

包装OpenGl:使其更简单易用,更具Rust风格。

use gust::prelude::*;

let window = Window::new(1920, 1080, "Hello World !");
let player_texture = Rc::new(Texture::from_path("assets/player.png"));
let mut player_sprite = Sprite::from(&player_texture);
let event_handler = EventHandler::new(&window);

player_sprite.set_position(Vector::new(1920. / 2., 1080. / 2.));

while window.is_open() {

    for event in event_handler.fetch() {
        match event.1 {
            Events::Key(Key::Escape, _, Action::Press, _) => { window.should_close() },
            _ => { /* Nothing happen */ }
        }
    }

    window.clear();
    window.draw(player_sprite);
    window.display();
}
println!("GoodBye !");

此简单代码允许创建一个窗口并在用户按下Esc键之前在其上绘制。

没有特定的概念

没有动画模块,没有高级事件系统,没有多线程渲染。

(所有这些都将实现在基于此的另一个项目Rame中)

想法是你可以用Gust创建这些。这不是Gust的工作,提供这种类型的API不是Gust的责任。

学习

这是我自己的项目,其背后的想法是尽可能多地学习。所以如果有什么东西看起来很有趣要实现,我可能会去做。

示例

我会宣传Rust,所以我必须展示尽可能好的Rust代码。遵循良好的编程实践和流程。(良好的git使用,文档,单元测试,基准测试,美观且可靠) 这是对我人民的一种示例。

Gust内部有什么

这里你可以看到UML图。

Uml Gust

你可以通过编写

cargo doc --open

然后按下键盘上的 Enter 键来生成文档

我发誓!

如何贡献

如果您想将代码放入Gust,欢迎之至。但您需要提交一个合适的pull-request以便审查。您应该知道这一点,但重要的是要理解,我希望得到尽可能好的代码,即使它不是我的。我刚开始学习Rust才6个月。

免责声明

现在请不要使用Gust,或者如果您已经在使用,请将遇到的所有错误都记录为问题,并考虑修复它们:)

谢谢,如果您感兴趣,可以阅读Wiki,或者查看我的其他项目。

依赖关系

~19MB
~362K SLoC