正在加载视频...

视频加载失败

Hot take: retained-mode was a premature optimization. We built Membrane using rust and egui and never looked back. When our IDE was react-based we had to worry about reflows and re-renders. With immediate-mode every frame is a re-render! But it only takes 900us

89,828 次观看 • 1 年前 •via X (Twitter)

10 条评论

Juan Campa 的头像
Juan Campa1 年前

Retained-mode made sense when GPUs didn't exist but these days virtually every device has a powerful enough GPU to continually paint what amounts to a bunch of rectangles.

static_assert(false) 的头像
static_assert(false)1 年前

Nice UI! … now let’s see the battery life

Juan Campa 的头像
Juan Campa1 年前

It uses 0.9ms out of 16.6ms which translates to ~6% usage of a single CPU core! I’m okay with that. (assuming 60hz display, double for 120hz) GPU might actually be less than DOM-based apps because there’s no layer compositor. I haven’t measured though. Everything is rendered in a single pass. It does nothing while idle or backgrounded. Only when being interacted with.

WerWolv 的头像
WerWolv1 年前

Had the exact same experience when making ImHex! Immediate Mode is great. I did make one optimization though. By default we render at the screen refresh rate but if the window isn't focused or no input events have happened for a few seconds, we lower it to 5 FPS

Patryk Zoltowski 的头像
Patryk Zoltowski1 年前

This maybe makes sense for some desktop apps but definitely not for mobile apps or OS ui - would drain battery too much. Imagine all windows OS gui and apps written in immediate mode and battery would be dead much faster.

____ _____ 的头像
____ _____1 年前

Look into lazy evaluation! You can use an immediate mode API with retained mode performance if you do it right. That's what I did on my own project at least.

Juan Campa 的头像
Juan Campa1 年前

Isn’t that exactly what react does?

Johannes Schickling 的头像
Johannes Schickling1 年前

Damn this UI looks awesome!

Patrick Smith 的头像
Patrick Smith1 年前

React is a retained virtual DOM because the other retained system, the DOM, has a slow API. Which is then transformed by the browser into another retained layout tree, and that into a retained paint tree. It’s multiple levels of retained.

Johann Woelper 的头像
Johann Woelper1 年前

I did the same with my image viewer: Never looked back. The most important part is that UI is fun again now.

相关视频