Expand description
§imgui-glow-renderer
Renderer for imgui-rs
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.
§Scope
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.
§sRGB
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.
§License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Re-exports§
pub use glow;
Modules§
Structs§
- Renderer which owns the OpenGL context and handles textures itself. Also converts all output colors to sRGB for display. Useful for simple applications, but more complicated applications may prefer to use
Renderer
, or even write their own renderer based on this code. - This OpenGL state backup is based on the upstream OpenGL example from imgui, where an attempt is made to save and restore the OpenGL context state before and after rendering.
- Main renderer. Borrows the OpenGL context and texture map when required.
- Texture map where the imgui texture ID is simply numerically equal to the OpenGL texture ID.
Enums§
Traits§
- Trait for mapping imgui texture IDs to OpenGL textures.