1 个不稳定发布
0.1.3 | 2023年12月27日 |
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
#391 在 图形API
13KB
197 行
ImGui-SFML-Support
为Rust的ImGui移植提供的SFML后端
代码示例
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();
}
}
}
安装说明
重要提示:此软件包无法直接使用!
由于crates.io处理版本的方式,您应该使用以下指定的解决方案才能使其正常工作。
为了修复此问题,请在您的crate的Cargo.toml
文件中的[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" }
我已经提交了一个pull request以修复此问题,它已被接受!
然而,由于cargo处理依赖项和版本的方式,在rust-sfml
更新到0.22.0
之前,需要此解决方案。
这是因为rust-sfml
版本0.21.0
没有提供所需的渲染器所需的sf::Context::getFunction()
。
鸣谢
imgui-opengl-renderer: 提供渲染器
imgui-sfml: 一个执行相同功能的C++库
许可证
代码遵循MIT许可证
依赖项
~14–19MB
~261K SLoC