#imgui #log #logging #logger #amethyst #api-bindings #back-end

imgui-log

将日志输出到 imgui 窗口和/或 stdout 的日志后端

1 个不稳定版本

0.1.0 2019年10月7日

#836GUI

MIT/Apache

32KB
257

imgui-log

一个将日志路由到 imgui 窗口的日志记录器。

支持独立模式(自己hook到你的UI),以及 amethyst-imgui 系统(每帧自动渲染)。

preview

设置

将以下内容添加到你的 Cargo.toml

[dependencies]
imgui-log = "0.1.0"

基本示例

// Start the logger
let log = imgui_log::init(); 

// Create your UI
let ui: imgui::Ui = ... ;

// Render loop
loop {
    // Output some info
    info!("Hello World");

    // Draw to a window
    let window = imgui::Window::new(im_str!("My Log"));
    log.draw(&ui, window);
}

配置

提供了一个默认配置,但如果你愿意,可以自定义格式字符串、着色等。

imgui_log::init_with_config(LoggerConfig::default()
    .stdout(false)
    .colors(LogColors {
        trace: [1., 1., 1., 1.],
        debug: [1., 1., 1., 1.],
        info: [1., 1., 1., 1.],
        warn: [1., 1., 1., 1.],
        error: [1., 1., 1., 1.],
    })
);

Amethyst 使用

启用 amethyst-system 功能。

[dependencies]
imgui-log = { version = "0.1.0", features = ["amethyst-system"] }

imgui::init 替换为 imgui_log::create_system 并将其添加到你的应用 .with() 语句中

如果尚未使用,请添加 RenderImgui 插件。(这从 amethyst-imgui 包中重新导出,以方便你使用)

    use imgui_log::amethyst_imgui::RenderImgui;

    /// ....

    let app_root = application_root_dir()?;
    let display_config_path = app_root.join("examples/display.ron");
    let game_data = GameDataBuilder::default()
        .with_barrier()
        .with(imgui_log::create_system(), "imgui_log", &[]) // <--- ADDED LINE 
        .with_bundle(InputBundle::<StringBindings>::default())?
        .with_bundle(
            RenderingBundle::<DefaultBackend>::new()
                .with_plugin(
                    RenderToWindow::from_config_path(display_config_path)
                        .with_clear([0.34, 0.36, 0.52, 1.0]),
                )
                .with_plugin(RenderImgui::<StringBindings>::default()), // <--- ADDED LINE
        )?;

    Application::build("/", Example)?.build(game_data)?.run();

依赖关系

~13–30MB
~450K SLoC