This page showcases a bunch of small features that are really useful.

ImGui and rendering

While dear imgui provides a lot of features, we decided to add some additional features on top of it to improve the development experience.

Overrides for functions with bool* p_open

Each UI component has a ComponentState enum member that looks like this:

enum UImGui_ComponentState
{
    UIMGUI_COMPONENT_STATE_PAUSED,
    UIMGUI_COMPONENT_STATE_RUNNING,
    UIMGUI_COMPONENT_STATE_OFF,
};

When set to RUNNING (the default mode), it's shown on the screen. If set to PAUSED, it's not shown but is expected to be rendered at some point. If set to OFF, it's not supposed to be active.


Since UI components have this state enum, we can use it to enable/disable rendering of components. Because it's an enum, however, we cannot pass it directly as p_open, since dear imgui requires p_open to be a bool*.

To fix this, we have added additional overrides that take a void* to enable you to use the state enum directly without casting the pointer. The functions can be seen on our dear imgui fork here.

Overrides for ImGui::Image, ImGui::ImageWithBg, and ImGui::ImageButton

The framework also adds overloads of these three dear imgui functions that take a const UImGui::Texture& instead of a raw ImTextureID plus size. See the Textures entry for details, including the caveats about texture filtering when batching large numbers of unfiltered images.