#opengl-rendering #opengl #sdl2 #egui #gamedev #graphics

egui_sdl2_gl

用于与 sdl2-rs 和 open gl 一起使用的 Egui 后端

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日

#158GUI

Download history 2/week @ 2024-04-28 13/week @ 2024-05-19 2/week @ 2024-05-26 11/week @ 2024-06-02 151/week @ 2024-06-09 37/week @ 2024-06-16 6/week @ 2024-06-23 31/week @ 2024-06-30 367/week @ 2024-07-28 5/week @ 2024-08-04 3/week @ 2024-08-11

每月375 次下载

MIT 许可证

48KB
1K SLoC

Rust 1K SLoC // 0.0% comments GLSL 138 SLoC // 0.1% comments

Crates.io Documentation CI

Egui 的 SDL2 + Open GL 后端

Example screenshot

这是一个 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 中的源代码)作为本版本实现的指南,但在几个方面有所偏离

  1. 我没有使用原始代码中使用的 App 架构,因为我希望将其保持尽可能简单。
  2. 我为 painter 类添加了一个 update_user_texture_data 方法,它允许轻松动态更新需要由 Egui 管理的纹理(例如,在 Image 控件中渲染)。请参阅 examples/example.rs 了解其用途。

我不是Egui、OpenGL或Rust方面的专家。如果您发现后端实现方面有任何问题,请提交一个问题票(或者更好的,发送一个PR!)!有关SDL2、Egui或OpenGL的问题应直接联系各自的仓库所有者!

注意:现在已支持大多数基本功能。

依赖项

~26MB
~432K SLoC