September 28, 2022

ImGui Extension Plus Imguizmo, Implot, Imnodes

In the latest version of Evergine, we added support for the ImGui library and three of its best extra-modules to enable rich interfaces and tools inside your Evergine applications.

 

By adding the Evergine.Bindings.ImGui package to your projects, and optionally any of the supported extensions (Evergine.Bindings.Imguizmo, Evergine.Bindings.Implot, Evergine.Bindings.Imnodes), you can start using its straightforward API to create small tool controls and visualize different aspects of the application. 

But, what the heck is ImGui? 

In case you haven’t heard about it, ImGui is a self-contained library that creates elaborate interfaces that live inside the graphic application, which are rendered as any other item in the virtual world, but in 2D. In that way, it is possible to create entire complex interfaces for software like graphics editors inside the application.  

Figure 1. Example of usage of ImGui on Tracy Profiler

What about Imguizmo, Implot, and Imnodes? 

Imguizmo is an extension to ImGui that allows to create specific controls for 3D objects, such as camera orientation manipulators and controls that allow for live rotation and translation of 4×4 matrices. 

Implot is another extension to create multiple types of plots inside a ImGui window, and it is very useful to visualize changing variables at runtime. 

Imnodes on the other hand adds a useful control to create and visualize graphs and modify its connections and nodes. 

How to use it on your application 

First, after adding the nuget dependencies, you will have to register the ImGui manager in the scene: 

Then, it is just a matter of creating components that call the ImGui API to start rendering new controls. There is more detailed information in the docs, and we just released a small demo illustrating the main features. 

 

We will keep our bindings up-to-date with the ImGui development, so don’t worry about being stuck on old versions. Currently, we are only supporting windows (x86-x64), but we plan to add support for ARM64 and Linux platforms very soon. On top of it, we will be adding more extensions in the near future, so don’t forget to follow us on Twitter (@EvergineTeam) and our YouTube channel.

Wait! Don't leave yet.

Sign up for our monthly newsletter to be updated on all the latest news, case studies, and more.

We don't send spam and you can unsubscribe at any time.