Updated About the IMGUI paradigm (markdown)

omar
2025-10-02 20:35:54 +02:00
parent f4809388e1
commit 349a93f469

@@ -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).
<BR>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.