Updated About the IMGUI paradigm (markdown)

omar 2021-02-15 12:30:48 +01:00
parent 02e0414d28
commit aaa16e825e

@ -4,7 +4,7 @@ THIS IS WIP/DRAFT
**This is an attempt at explaining what the IMGUI paradigm stands for, and what it could be**.
Proponent of the IMGUI paradigm have noticed that it was widely misunderstood, over and.
Proponent of the IMGUI paradigm have noticed that it was widely misunderstood, over and over.
As of Feb 2021, even the [IMGUI Wikipedia page](https://en.wikipedia.org/wiki/Immediate_mode_GUI) is completely off the mark. There are reasons for that:
- the acronym may be misleading?
- people didn't do a good job enough explaining or documentation what IMGUI means?
@ -12,6 +12,8 @@ As of Feb 2021, even the [IMGUI Wikipedia page](https://en.wikipedia.org/wiki/Im
- many popular IMGUI implementation have made similar design choices, making it more confusing what is actually the soul and backbone of the IMGUI paradigm vs a set of implementation choices. In other words, many things haven't been thoroughly explored.
- the naming and success of "Dear ImGui" blurred the line a little bit further (should have used another name).
The second purpose of this page should be to make it clear that there is a large space to explore in UI programming.
### History
The acronym IMGUI was coined by Casey Muratori in this video in 2005:
@ -35,21 +37,22 @@ The existence of those two terms effectively has hindered both discussions and r
- The interface tries to minimize the app/programmer having to retain data from the UI library.
- The interface tries to minimize the UI library having to retain data from the app/programmer.
This is in comparison with typical RMGUI which:
This is in comparison with typical RMGUI ("retained-mode UI") which:
- Often have the app/programmer to retain lots of artifacts from the UI library (e.g. create objects, maintain references).
- Often have the UI library retain app/programmer data in widgets, requiring synchronization mechanisms.
What it doesn't stands for:
- IMGUI does not means that stuff are drawn immediately.
- IMGUI does not means that the library doesn't retain data.
- IMGUI does not means that stuff are drawn immediately.
- IMGUI does not means it needs a continuous loop nor need to refresh continuously.
- IMGUI does not means it needs to refresh all-or-nothing.
- IMGUI does not means state are polled.
- IMGUI does not means that states are polled.
- IMGUI does not means the UI doesn't look "native".
- IMGUI does not means it needs a GPU to render.
- IMGUI does not means limited layout feature.
- IMGUI does not means single pass flow.
- IMGUI does not means that layout features are limited.
- IMGUI does not means that there is a single pass flow.
TODO: Each of those points should be explained with a paragraph. We could also describe how common UI libraries (of all types) stand on a given axis.