Crates.io | imgui-vulkano-renderer |
lib.rs | imgui-vulkano-renderer |
version | 0.7.3 |
source | src |
created_at | 2020-07-28 03:39:48.053882 |
updated_at | 2021-07-05 08:20:44.369178 |
description | A renderer for imgui-rs using Vulkano |
homepage | |
repository | https://github.com/Tenebryo/imgui-vulkano-renderer |
max_upload_size | |
id | 270298 |
size | 1,893,599 |
A vulkano-based renderer for imgui-rs.
Warning: I've only used this renderer in a few examples and a couple projects, so there are likely some issues, but it seems to work with basic ImGui usage.
Supports imgui-rs version 0.7.0
and vulkano version 0.23.0
.
Note: Currently vulkano-win
and imgui-winit-support
, the vulkano and imgui-rs winit
integrations, only support winit 0.24.0
, even though the current winit version is 0.25.0
.
The Renderer
struct is designed to be a drop-in replacement for the equivalent in imgui-glium-renderer
and imgui-gfx-renderer
(from the imgui-rs repository), modulo the API-specific context arguments (the Vulkano Device
and Queue
structs).
use imgui_vulkano_renderer::Renderer;
let mut renderer = Renderer::init(
&mut imgui_ctx,
device.clone(),
graphics_queue.clone(),
Format::R8G8B8A8Srgb
).unwrap();
Use the Renderer::draw_commands
function to update buffers and
let ui = imgui_ctx.frame();
// ... UI elements created here
let draw_data = ui.render();
let mut cmd_buf_builder = AutoCommandBufferBuilder::new(device.clone(), graphics_queue.family()).unwrap();
// add Vulkan commands to a command buffer. Here a new command buffer is used, but you can also append to an existing one.
renderer.draw_commands(&mut cmd_buf_builder, graphics_queue.clone(), target_image.clone(), draw_data).unwrap();
let cmd_buf = cmd_buf_builder.build().unwrap();
The font altas texture can be reloaded with the following:
renderer.reupload_font_texture(&mut imgui_ctx, device.clone(), queue.clone());
Textures used in your UI are looked up in an imgui::Textures
struct, which can be accessed with Renderer::textures
.
I rewrote a couple of examples from imgui-rs to show basic usage (most of them only needed setup changes to the System
struct in examples/support/mod.rs
). They can be run with:
cargo run --example hello_world
cargo run --example custom_textures