use {
screen_13::prelude::*,
screen_13_fx::*,
screen_13_imgui::{Condition, ImGui},
};
fn main() -> Result<(), DisplayError> {
pretty_env_logger::init();
let event_loop = EventLoop::new().desired_swapchain_image_count(2).build()?;
let display = ComputePresenter::new(&event_loop.device)?;
let mut imgui = ImGui::new(&event_loop.device);
let mut pool = LazyPool::new(&event_loop.device);
let mut value = 0;
let choices = ["test test this is 1", "test test this is 2"];
event_loop.run(|mut frame| {
let app_image = frame.render_graph.bind_node(
pool.lease(ImageInfo::new_2d(
vk::Format::R8G8B8A8_UNORM,
frame.width,
frame.height,
vk::ImageUsageFlags::SAMPLED
| vk::ImageUsageFlags::STORAGE
| vk::ImageUsageFlags::TRANSFER_DST,
))
.unwrap(),
);
frame
.render_graph
.clear_color_image_value(app_image, [0.2, 0.22, 0.2, 1.0]);
let gui_image = imgui.draw_frame(&mut frame, |ui| {
ui.window("Hello world")
.position([10.0, 10.0], Condition::FirstUseEver)
.size([340.0, 250.0], Condition::FirstUseEver)
.build(|| {
ui.text_wrapped("Hello world!");
ui.text_wrapped("こんにちは世界!");
if ui.button(choices[value]) {
value += 1;
value %= 2;
}
ui.button("This...is...imgui-rs!");
ui.separator();
let mouse_pos = ui.io().mouse_pos;
ui.text(format!(
"Mouse Position: ({:.1},{:.1})",
mouse_pos[0], mouse_pos[1]
));
});
});
display.present_images(
frame.render_graph,
gui_image,
app_image,
frame.swapchain_image,
);
})
}