From 349a93f469fc28e21101a18bfc70538a4902eb3c Mon Sep 17 00:00:00 2001 From: omar Date: Thu, 2 Oct 2025 20:35:54 +0200 Subject: [PATCH] Updated About the IMGUI paradigm (markdown) --- About-the-IMGUI-paradigm.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/About-the-IMGUI-paradigm.md b/About-the-IMGUI-paradigm.md index 8ee755a..da6c34e 100644 --- a/About-the-IMGUI-paradigm.md +++ b/About-the-IMGUI-paradigm.md @@ -4,7 +4,8 @@ THIS IS WIP/DRAFT / [Discuss this article](https://github.com/ocornut/imgui/issu **This is an attempt at explaining what the IMGUI paradigm stands for, and what it could be**. -Please note the [References](#references) section where several good articles have been written about this topic. +Read first: [FAQ entry: What is the difference between Dear ImGui and traditional UI toolkits?](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#q-what-is-the-difference-between-dear-imgui-and-traditional-ui-toolkits). +
Also note [References](#references) section where several good articles have been written about this topic. Proponent of the IMGUI paradigm have noticed that it was widely misunderstood, over and over. As of ~~Feb 2021~~ January 2024, even the [IMGUI Wikipedia page](https://en.wikipedia.org/wiki/Immediate_mode_GUI) is completely off the mark and incorrect. (As of August 2024 the page seemingly have been nuked). @@ -113,13 +114,15 @@ The existence of those two terms effectively has hindered both discussions and r ### Half of a definition -@ocornut's attempt for a definition (WIP, 2021) +@ocornut's attempt for a definition. What we care about: - IMGUI refers to the API: literally the interface between the application and the UI system. - - The API tries to minimize the application having to retain data related to the UI system. - - The API tries to minimize the UI system having to retain data related to the application. + - An IMGUI API favor the application code owning its data and being the single source of truth for it. + - An IMGUI API tries to minimize the application having to retain/manage data related to the UI system. + - An IMGUI API tries to minimize the UI system having to retain/manage data related to the application. + - Synchronization between application data and UI data is natural and less error-prone. - IMGUI does NOT refer to the implementation. Whatever happens inside the UI system doesn't matter. This is in comparison with typical RMGUI ("retained-mode UI"): @@ -140,9 +143,7 @@ What it doesn't stands for: - IMGUI does not mean that the library can or cannot support feature x or y. - IMGUI does not mean that the library is more or less portable. -TODO: Each of those points could be further developed. We could try to describe how common UI libraries (of all types) stand on a given topic. We could also describe less explored paths and envision what new UI libraries could do. - -It's particularly important we develop this section to dissociate the promise (sometimes unfulfilled) vs current implementation. The full-feature bell-and-whistle promise is more likely to be ever fulfilled by a UI library if people understand that it is possible. +TL;DR; It does not matter much. Consider specific properties of each library rather than comparing two umbrella concepts. ### Modeless write-up @@ -179,6 +180,7 @@ _A lot in ui depends on the problem on hand so I feel there is no silver bullet. ### References +- [FAQ entry: What is the difference between Dear ImGui and traditional UI toolkits?](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#q-what-is-the-difference-between-dear-imgui-and-traditional-ui-toolkits). - [Johannes 'johno' Norneby's article](http://www.johno.se/book/imgui.html), 2007. - [A presentation by Rickard Gustafsson and Johannes Algelind](http://www.cse.chalmers.se/edu/year/2011/course/TDA361/Advanced%20Computer%20Graphics/IMGUI.pdf), 2011. - [Jari Komppa's tutorial on building an IMGUI library](http://iki.fi/sol/imgui/), @jarikomppa, 2006.