imgui-vulkano-renderer
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.6.0 and vulkano version 0.19.0.
Note: Currently vulkano-win, the vulkano winit integration, only supports winit 0.22.2 while imgui-winit-support by default uses winit 0.23.0. To make them compatible, enable the winit-22 feature in the imgui-winit-support crate.
Usage
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).
Setup:
use Renderer;
let mut renderer = init.unwrap;
Rendering:
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 = new.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.unwrap;
let cmd_buf = cmd_buf_builder.build.unwrap;
Misc.
The font altas texture are reloaded with the following:
renderer.reupload_font_texture;
Textures used in your UI are looked up in an imgui::Textures struct, which can be accessed with Renderer::textures.
Examples
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: