7 unstable releases (3 breaking)

0.11.0 Apr 5, 2023
0.10.0 Jan 16, 2023
0.9.0 Dec 1, 2022
0.8.3 Dec 26, 2021
0.8.0 Sep 17, 2021

#771 in GUI

Download history 413/week @ 2023-02-08 813/week @ 2023-02-15 416/week @ 2023-02-22 642/week @ 2023-03-01 344/week @ 2023-03-08 582/week @ 2023-03-15 441/week @ 2023-03-22 610/week @ 2023-03-29 503/week @ 2023-04-05 634/week @ 2023-04-12 474/week @ 2023-04-19 706/week @ 2023-04-26 478/week @ 2023-05-03 884/week @ 2023-05-10 664/week @ 2023-05-17 912/week @ 2023-05-24

3,183 downloads per month
Used in imgui-sdl2-support


14K SLoC

Renderer for [imgui-rs][imgui] using the [glow] library for OpenGL.

This is heavily influenced by the example from upstream.

Basic usage

A few code examples are provided in the source.

In short, create either an [AutoRenderer] (for basic usage) or [Renderer] (for slightly more customizable operation), then call the render(...) method with draw data from [imgui].

OpenGL (ES) versions

This renderer is expected to work with OpenGL version 3.3 and above, and OpenGL ES version 3.0 or above. This should cover the vast majority of even fairly dated hardware. Please submit an issue for any incompatibilities found with these OpenGL versions, pull requests to extend support to earlier versions are welcomed.


Consider this an example renderer. It is intended to be sufficent for simple applications running imgui-rs as the final rendering step. If your application has more specific needs, it's probably best to write your own renderer, in which case this can be a useful starting point. This renderer is also not foolproof (largely due to the global nature of the OpenGL state). For example, a few "internal" functions are marked pub to allow the user more fine-grained control at the cost of allowing potential rendering errors.


When outputting colors to a screen, colors need to be converted from a linear color space to a non-linear space matching the monitor (e.g. sRGB). When using the [AutoRenderer], this library will convert colors to sRGB as a step in the shader. When initialising a [Renderer], you can choose whether or not to include this step in the shader or not when calling [Renderer::initialize].

This library also assumes that textures have their internal format set appropriately when uploaded to OpenGL. That is, assuming your texture is sRGB (if you don't know, it probably is) the internal_format is one of the SRGB* values.


~363K SLoC