9 个版本 (5 个重大更新)
0.6.0 | 2023 年 12 月 14 日 |
---|---|
0.5.0 | 2023 年 10 月 12 日 |
0.4.1 | 2023 年 10 月 11 日 |
0.3.0 | 2023 年 1 月 7 日 |
0.1.2 | 2021 年 9 月 9 日 |
#279 in GUI
每月 136 次下载
用于 despero
82KB
1.5K SLoC
egui-winit-ash-integration
这是为 egui 和 egui-winit 定制的集成库,以及 ash。默认 GPU 分配器是 gpu_allocator,但您也可以实现 AllocatorTrait。
由于 egui 的 0.24 版本起,此库不支持多视口的多窗口。
egui-ash 是另一个库,它支持多视口,请查看此库。
示例
cargo run --example example
cargo run --example user_texture
用法
fn main() -> Result<()> {
let event_loop = EventLoop::new();
// (1) Call Integration::<Arc<Mutex<Allocator>>>::new() in App::new().
let mut app = App::new(&event_loop)?;
event_loop.run(move |event, _, control_flow| {
*control_flow = ControlFlow::Poll;
match event {
Event::WindowEvent { event, window_id: _ } => {
// (2) Call integration.handle_event(&event).
let _response = app.egui_integration.handle_event(&event);
match event {
WindowEvent::Resized(_) => {
app.recreate_swapchain().unwrap();
}
WindowEvent::ScaleFactorChanged { .. } => {
// (3) Call integration.recreate_swapchain(...) in app.recreate_swapchain().
app.recreate_swapchain().unwrap();
}
WindowEvent::CloseRequested => {
*control_flow = ControlFlow::Exit;
}
_ => (),
}
},
Event::MainEventsCleared => app.window.request_redraw(),
Event::RedrawRequested(_window_id) => {
// (4) Call integration.begin_frame(), integration.end_frame(&mut window),
// integration.context().tessellate(shapes), integration.paint(...)
// in app.draw().
app.draw().unwrap();
},
_ => (),
}
})
}
// (5) Call integration.destroy() when drop app.
功能标志
gpu-allocator-feature
- 启用 gpu-allocator 库。
其他功能直接控制底层的 egui_winit 功能
许可证
MIT OR Apache-2.0
依赖项
~12–46MB
~760K SLoC