imgui-sfml-support

Crates.ioimgui-sfml-support
lib.rsimgui-sfml-support
version0.1.3
sourcesrc
created_at2023-12-26 18:39:45.179689
updated_at2023-12-27 12:09:00.444434
descriptionA SFML backend for Rust's ImGui port
homepage
repositoryhttps://github.com/truenotzero/imgui-sfml-support
max_upload_size
id1081107
size22,513
(truenotzero)

documentation

README

ImGui-SFML-Support

A SFML backend for Rust's ImGui port

Code example

use imgui::Context;
use imgui_sfml_support::*;
use sfml::{graphics::{RenderWindow, RenderTarget, Color}, window::{Style, ContextSettings, Event}};

fn main() {
    let mut wnd = RenderWindow::new((800, 800), "Rust: SFML-ImGui", Style::CLOSE, &ContextSettings::default());

    let mut imgui = Context::create();
    let mut renderer = SFMLRenderer::init(&mut imgui);
    let mut platform = SFMLPlatform::init(&mut imgui, &wnd);


    while wnd.is_open() {
        while let Some(event) = wnd.poll_event() {
            platform.handle_event(&mut imgui, event);
            match event {
                Event::Closed => wnd.close(),
                _ => (),
            }


            platform.prepare_frame(&mut imgui);
            let ui = imgui.new_frame();
            // do your imgui work here
            ui.show_demo_window(&mut true);

            wnd.clear(Color::BLACK);
            wnd.reset_gl_states();

            renderer.render(&mut imgui, &mut wnd);

            wnd.display();
        }
    }
}

Installation instructions

IMPORTANT NOTE: This crate won't work out of the box!

Due to how crates.io handles versioning, you should use the workaround specified below to get this working.
To fix this, change in your crate's Cargo.toml under [dependencies]:

# change these lines
sfml = "0.21.0"
imgui-sfml-support = "0.1.1"
# to these lines
sfml = { git = "https://github.com/jeremyletang/rust-sfml.git" }
imgui-sfml-support = { git = "https://github.com/truenotzero/imgui-sfml-support.git", branch = "workaround" }

I have submitted a pull request in order to fix the issue, which has been accepted!
However, due to how dependencies and versioning are handled by cargo, until rust-sfml doesn't update to 0.22.0, the workaround is needed.
This is because rust-sfml version 0.21.0 doesn't provide sf::Context::getFunction() which is required by the renderer used.

Credits

imgui-opengl-renderer: For providing the renderer
imgui-sfml: A C++ library which does the same thing

Licensing

Code is MIT licensed

Commit count: 14

cargo fmt