#egui-integration #ash #winit #vulkan #gpu-allocator

egui-winit-ash-integration

这是为 winit 和 ash 定制的 egui 集成库

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

Download history 44/week @ 2024-04-02

每月 136 次下载
用于 despero

MIT/Apache

82KB
1.5K SLoC

egui-winit-ash-integration

Latest version Documentation MIT Apache egui version: 0.23.0

这是为 eguiegui-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.

完整示例在 examples 目录中

功能标志

gpu-allocator-feature - 启用 gpu-allocator 库。

其他功能直接控制底层的 egui_winit 功能

许可证

MIT OR Apache-2.0

依赖项

~12–46MB
~760K SLoC