#glutin #imgui #bindings #dear #events #key

imgui-glutin-support

imgui crate 的 glutin 支持代码

1 个不稳定版本

使用旧的 Rust 2015

0.0.21 2018 年 10 月 11 日

#1263GUI

MIT/Apache

660KB
13K SLoC

此 crate 提供了支持函数,简化了 imgui-rs 与 glutin 的集成。

使用库

在您的初始化代码中调用 configure_keys

use imgui::ImGui;

let mut imgui = ImGui::init();
imgui_glutin_support::configure_keys(&mut imgui);

在您的主循环中,您应该已经从 glutin 中检索事件并处理它们。您需要做的只是将每个事件传递给 imgui_glutin_support

events_loop.poll_events(|event| {
    // do application-specific stuff with event

    imgui_glutin_support::handle_event(&mut imgui, &event);
});

高级用例

在更高级的用例中,您可能希望自行处理和过滤事件,并调用库中导出的各种小型辅助函数。

例如,您可能想自定义鼠标滚轮的行滚动量

events_loop.poll_events(|event| {
    // do application-specific stuff with event

    // default handling for events
    imgui_glutin_support::handle_event(&mut imgui, &event);

    // Scroll 10 times the pixels per line by handling LineDelta events again and
    // overriding the mouse wheel value
    if let Event::WindowEvent { event, .. } = event {
        match event {
            WindowEvent::MouseWheel {
                delta: MouseScrollDelta::LineDelta(_, lines),
                phase: TouchPhase::Moved,
                ..
            } => {
                imgui.set_mouse_wheel(lines * 10.0);
            }
            _ => ()
        }
    }
});

依赖关系

~15MB
~283K SLoC