Skip to main content

dear_imgui_wgpu/renderer/
core.rs

1use crate::{GammaMode, ShaderManager, WgpuBackendData, WgpuTextureManager};
2use wgpu::TextureView;
3
4#[cfg(any(feature = "multi-viewport-winit", feature = "multi-viewport-sdl3"))]
5use wgpu::Color;
6
7/// Main WGPU renderer for Dear ImGui
8
9///
10/// This corresponds to the main renderer functionality in imgui_impl_wgpu.cpp
11pub struct WgpuRenderer {
12    /// Backend data
13    pub(super) backend_data: Option<WgpuBackendData>,
14    /// Shader manager
15    pub(super) shader_manager: ShaderManager,
16    /// Texture manager
17    pub(super) texture_manager: WgpuTextureManager,
18    /// Default texture for fallback
19    pub(super) default_texture: Option<TextureView>,
20    /// Gamma mode: automatic (by format), force linear (1.0), or force 2.2
21    pub(super) gamma_mode: GammaMode,
22    /// Clear color used for secondary viewports (multi-viewport mode)
23    #[cfg(any(feature = "multi-viewport-winit", feature = "multi-viewport-sdl3"))]
24    pub(super) viewport_clear_color: Color,
25}
26
27#[cfg(any(feature = "multi-viewport-winit", feature = "multi-viewport-sdl3"))]
28impl Drop for WgpuRenderer {
29    fn drop(&mut self) {
30        self.clear_multi_viewport_renderer_state();
31    }
32}