| Crates.io | dear-imgui-glow |
| lib.rs | dear-imgui-glow |
| version | 0.1.0 |
| created_at | 2025-09-13 17:34:51.245227+00 |
| updated_at | 2025-09-13 17:34:51.245227+00 |
| description | Glow (OpenGL) renderer for Dear ImGui |
| homepage | https://github.com/Latias94/dear-imgui |
| repository | https://github.com/Latias94/dear-imgui |
| max_upload_size | |
| id | 1837953 |
| size | 144,301 |
Glow (OpenGL) renderer for Dear ImGui.
This crate provides a Glow-based renderer for Dear ImGui, allowing you to render Dear ImGui interfaces using the Glow OpenGL abstraction.
Add this to your Cargo.toml:
[dependencies]
dear-imgui-glow = "0.1"
use dear_imgui::Context;
use dear_imgui_glow::GlowRenderer;
use glow::HasContext;
// Initialize your OpenGL context and Dear ImGui context
let gl = glow::Context::from_loader_function(|s| {
// Your OpenGL loader function
load_gl_function(s)
});
let mut imgui = Context::create();
// Create the renderer
let mut renderer = GlowRenderer::new(gl, &mut imgui)?;
// In your render loop:
imgui.new_frame();
// ... build your UI ...
let draw_data = imgui.render();
renderer.render(draw_data)?;
For more control, you can use the Renderer directly:
use dear_imgui_glow::{Renderer, SimpleTextureMap};
let mut texture_map = SimpleTextureMap::new();
let mut renderer = Renderer::new(&gl, &mut imgui, &mut texture_map)?;
// In your render loop:
renderer.render(&gl, &texture_map, draw_data)?;
The following features are available:
docking: Enable docking features (requires Dear ImGui docking branch)multi-viewport: Enable multi-viewport supportgl_extensions_support: Enable checking for OpenGL extensionsdebug_message_insert_support: Support for gl.debug_message_insertbind_vertex_array_support: Support for glBindVertexArrayvertex_offset_support: Support for glDrawElementsBaseVertexclip_origin_support: Support for GL_CLIP_ORIGINbind_sampler_support: Support for glBindSamplerpolygon_mode_support: Support for glPolygonModeprimitive_restart_support: Support for GL_PRIMITIVE_RESTARTAll features except docking and multi-viewport are enabled by default.
This renderer supports:
Feature support is automatically detected based on the OpenGL version and available extensions.
Multi-viewport support allows Dear ImGui to create additional windows outside the main application window. To enable this:
multi-viewport featureio.config_flags |= ConfigFlags::VIEWPORTS_ENABLE✅ Completed Features:
🚧 In Progress:
📋 TODO:
The crate is structured as follows:
renderer.rs - Main renderer implementation (Renderer and GlowRenderer)shaders.rs - Shader compilation and managementstate.rs - OpenGL state backup/restorationtexture.rs - Texture management and mappingversions.rs - OpenGL version detection and feature supporterror.rs - Error types and handlingLicensed under either of
at your option.