Dear ImGui

Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline enabled application. It is fast, portable, renderer agnostic and self-contained (no external dependencies). - github / demo / 2

caption

Starter

With Meson use the Wrap to simplify your life:

$ meson wrap install imgui
$ meson build .

And the following main.cpp SDL2 (Win32, Mac, Linux, etc.) + SDL_Renderer for SDL2

see also

Give someone state and they’ll have a bug one day, but teach them how to represent state in two separate locations that have to be kept in sync and they’ll have bugs for a lifetime. - ryg

About the IMGUI paradigm

Dear ImGui is one possible implementation of an idea generally described as the IMGUI (Immediate Mode GUI) paradigm. The Immediate Mode GUI paradigm may at first appear unusual to some users. This is mainly because Retained Mode GUIs have been so widespread and predominant. The following links can give you a better understanding about how Immediate Mode GUIs works.

Immediate Mode

  • the client calls directly cause rendering of graphics objects to the display, or in which
  • the data to describe rendering primitives is inserted frame by frame directly from the client into a command list (in the case of immediate mode primitive rendering),without the use of extensive indirection - thus immediate - to retained resources.

Retained Mode

  • the graphics library, instead of the client, retains the scene (complete object model of the rendering primitives) to be rendered and
  • the client calls into the graphics library do not directly cause actual rendering, but make use of extensive indirection to resources, managed – thus retained – by the graphics library.

What are the performance implications of using an immediate-mode GUI compared to a retained-mode GUI?

Bindings

Crystal

Installation

Trying the example

cd lib/imgui-sfml/
crystal build examples/simple.cr

export LD_LIBRARY_PATH="$(pwd)"
./simple

Ruby

  • tested only on windows

Alternative

Written on November 4, 2020, Last update on October 28, 2023
gui lib c++ quote