Skip to main content

Crate dear_imgui_wgpu

Crate dear_imgui_wgpu 

Source
Expand description

WGPU backend for Dear ImGui

This crate provides a WGPU-based renderer for Dear ImGui, allowing you to render Dear ImGui interfaces using the WGPU graphics API.

§Features

  • WGPU version selection: choose exactly one of:
    • wgpu-28 (default)
    • wgpu-27 (for ecosystems pinned to wgpu 27.x, e.g. some Bevy version trains)
  • Modern texture management: Full integration with Dear ImGui’s ImTextureData system
  • External textures: Register existing wgpu::Texture resources for UI display, with optional per-texture custom samplers.
  • Gamma correction: Automatic sRGB format detection and gamma correction
  • Multi-frame buffering: Support for multiple frames in flight
  • Device object management: Helpers to recreate device objects (pipelines/buffers/textures) after loss
  • Multi-viewport support: Support for multiple windows (feature-gated via multi-viewport-winit for winit or multi-viewport-sdl3 for SDL3 on native targets)

§Example

use dear_imgui_rs::Context;
use dear_imgui_wgpu::{WgpuRenderer, WgpuInitInfo};
use wgpu::*;

// Initialize WGPU device and queue
let instance = Instance::new(&InstanceDescriptor::default());
let adapter = instance.request_adapter(&RequestAdapterOptions::default()).await.unwrap();
let (device, queue) = adapter.request_device(&DeviceDescriptor::default()).await?;

// Create Dear ImGui context
let mut imgui = Context::create();

// Create renderer (recommended path)
let init_info = WgpuInitInfo::new(device, queue, TextureFormat::Bgra8UnormSrgb);
let mut renderer = WgpuRenderer::new(init_info, &mut imgui)?;

// In your render loop:
// imgui.new_frame();
// ... build your UI ...
// let draw_data = imgui.render();
// renderer.render_draw_data(&draw_data, &mut render_pass)?;

Structs§

FrameResources
Per-frame resources
FrameResourcesStats
Statistics for frame resources
RenderResources
Shared render resources
RenderResourcesStats
Statistics for render resources
ShaderManager
Shader manager
UniformBuffer
Uniform buffer manager
Uniforms
Uniform data structure
WgpuBackendData
Main backend data structure
WgpuInitInfo
Initialization data for ImGui WGPU renderer
WgpuRenderState
Selected render state data shared with callbacks
WgpuRenderer
Main WGPU renderer for Dear ImGui
WgpuTexture
WGPU texture resource
WgpuTextureManager
Texture manager for WGPU renderer

Enums§

GammaMode
Gamma correction mode for the WGPU renderer
RendererError
Errors that can occur during rendering operations
TextureUpdateResult
Result of a texture update operation

Constants§

FS_ENTRY_POINT
Fragment shader entry point
SHADER_SOURCE
WGSL shader source
VS_ENTRY_POINT
Vertex shader entry point

Functions§

create_fragment_state
Create fragment state for render pipeline
create_vertex_buffer_layout
Create vertex buffer layout for Dear ImGui vertices
create_vertex_state
Create vertex state for render pipeline

Type Aliases§

RendererResult
Result type for renderer operations