23 个不稳定版本 (9 个重大变更)
0.27.1 | 2024年6月14日 |
---|---|
0.27.0 | 2024年3月29日 |
0.26.2 | 2024年3月14日 |
0.23.0 | 2023年11月4日 |
0.1.1 | 2020年11月5日 |
#158 在 GUI
每月375 次下载
48KB
1K SLoC
Egui 的 SDL2 + Open GL 后端
这是一个 Egui 的后端实现,可用于与 Egui 一起使用 SDL 2 来处理事件、音频、输入等,以及使用 OpenGL 进行渲染。
示例文件夹中包含了一个示例,说明了如何将这三个组件结合起来使用。要运行示例,请按照以下步骤操作
cargo run --example basic
cargo run --example mix
cargo run --example demo_lib --features=use_epi
从版本 13.1 开始,SDL2 作为 cargo 的依赖项“捆绑”在一起,因此不需要单独设置 SDL2。但是,如果您希望控制 SDL2 的设置,可以移除 cargo.toml 中的捆绑功能,并单独设置 SDL2 框架,如 SDL2 仓库中所述。
请注意,使用 OpenGL 涉及将任何 Open GL 调用包装在 任何 不安全块中。请查看 src/painter.rs 文件以了解其含义。这当然意味着在处理不安全块中的代码时,所有假设都不成立,但这是在处理原始 OpenGL 时必须付出的代价。
那么,为什么有人想使用这个呢?我会说,使用 SDL2 的熟悉度、Egui 的优雅性和 OpenGL 的强大功能,使得制作游戏、仿真器、图形工具等成为良好的组合。
就实现而言,我使用了 Emil 的原始 egui_glium 和 egui_web 后端(请参阅 egui github 中的源代码)作为本版本实现的指南,但在几个方面有所偏离
- 我没有使用原始代码中使用的 App 架构,因为我希望将其保持尽可能简单。
- 我为 painter 类添加了一个 update_user_texture_data 方法,它允许轻松动态更新需要由 Egui 管理的纹理(例如,在 Image 控件中渲染)。请参阅 examples/example.rs 了解其用途。
我不是Egui、OpenGL或Rust方面的专家。如果您发现后端实现方面有任何问题,请提交一个问题票(或者更好的,发送一个PR!)!有关SDL2、Egui或OpenGL的问题应直接联系各自的仓库所有者!
注意:现在已支持大多数基本功能。
依赖项
~26MB
~432K SLoC