Earlier quoted context omitted.
Imgui has problems, but this isn't one of them. Your retained-mode GUI framework isn't doing dirty rectangles anymore anyway ; it's going to redraw everything anyway. (Not every frame, but upon receiving an event.) With modern GPUs, redrawing a whole frame is super cheap , even with integrated graphics. The gain, then, is going to come from not having to rebuild the scene graph every frame. And modern imgui implement…
> Your retained-mode GUI framework isn't doing dirty rectangles anymore anyway; it's going to redraw everything anyway. (Not every frame, but upon receiving an event.) Except that a a retained mode GUI can easily tell that no redraw is necessary and it will be a no-op. > With modern GPUs, redrawing a whole frame is super cheap, even with integrated graphics. It's cheap as in fast, but it's not cheap in power consumpt…
How is that different from imgui exactly? Both dirty rect invalidation and the following redraw skipping is incredibly easy to do (and has been done, see microui)
> Rebuilding a scene graph that's based on CSS-style flexbox layout is REALLY fast. It's a linear time operation in the worst case and a lot of the work can be just skipped if the layout doesn't need updating.
I'm not sure what are the numbers there, but my fullscreen imgui application (You can see it here https://twitter.com/DoctorGester/status/1022147094558269446 and there are views with more complex layouts, rich text rendering, etc) hacked on top of DearIMGUI takes 0.2ms (200 microseconds) per frame, that is including all the logic and submission of commands to the GPU backend. That's before any optimization or multithreading independent views. Do you really get much faster than that?