From c9c458c40a47d434464eea36f124744af4d672c6 Mon Sep 17 00:00:00 2001 From: omar Date: Mon, 20 Jul 2026 15:20:27 +0200 Subject: [PATCH] Update FAQ.md --- docs/FAQ.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index baf4daef3..8f5bd755a 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -85,14 +85,15 @@ Here's a very simplified comparison between the approach taken by Dear ImGui vs |--------------------------|--------------------------| | UI fully issued on every update. | UI issued once then later modified. | | UI layout is fully dynamic and can change at any time.
UI is generally emitted programmatically, which empowers reflecting a dynamic set of data. | UI layout is mostly static.
UI may be emitted programmatically or from data created by offline tools. UI need extra code to evolve, which is often tedious and error-prone if it needs to be reflecting dynamic data and systems. | -| Application can submit UI based on arbitrary logic and then forget about it. | Application needs more bookkeeping of UI elements. | +| UI system is optimized for the worst case and designed be optimal under constant changes. | UI system is optimized for the case where nothing changes. Performances tends to degrade when UI changes. | +| Application can submit UI based on arbitrary logic without bookkeeping all aspects of that logic. | Application needs more bookkeeping of UI elements. | | UI library stores minimal amounts of data. At one point in time, it typically doesn't know or remember which other widgets are displayed and which widgets are coming next. As a result, certain layout features (alignment, resizing) are not as easy to implement or require ad-hoc code. | UI library stores entire widgets tree and state. UI library can use this retained data to easily layout things. | | UI code may be added anywhere.
You can even create UI to edit a local variable! | UI code needs to be added in dedicated spots. | | UI layout/logic/action/data bindings are all nearby in the code. | UI layout/logic/action/data bindings in distinct functions, files or formats. | | Data is naturally always synchronized. | Use callback/signal/slot for synchronizing data (error-prone). | -| API is simple and easy to learn. In particular, doing basic things is very easy. | API is more complex and specialized. | -| API is low-level (raw language types). | API are higher-level (more abstractions, advanced language features). | -| Less fancy look and feel. | Standard look and feel. | +| API is simple and easy to learn. In particular, doing basic things is very easy.
Attractive to more programmers. | API is more complex and specialized.
Tends to require specialized programmers. | +| API is low-level. Few abstractions, uses raw language types and your existing data. | API are higher-level. More abstractions, advanced language features. | +| Less fancy look and feel. But keeps improving :) | Standard look and feel. | | Compile yourself. Easy to debug, hack, modify, study. | Mostly use precompiled libraries. Compiling, modifying or studying is daunting if not impossible. | | Run on every platform. | Run on limited desktop platforms. |