標籤:

如何評價 imgui?

ocornut/imgui


imgui 現在已經更名叫 dear-imgui 了,因為 imgui 是個統稱(immediate mode gui )。這類UI的特點是UI是沒有狀態的,比如繪製一個字元:ui.Label("Some Text") 即可,不需要使用 UI 組件,比如Android中的Text/WPF的Label控制項等。這種UI的開發模式其實很早就存在了,以前的主機遊戲中UI就是這麼寫的.

簡單的說下優缺點,優點:快,實現簡單,因為沒有UI狀態維護所以使用起來很容易上手,對於ingame-gui來說是很不錯的。缺點:不利於布局/動畫/Style配置. 造成這些這些問題的原因還因為imgui是沒有狀態的,通常布局演算法都需要兩遍遍歷所有UI組件(第一遍計算大小第二遍計算布局),但是 imgui 只會運行一遍這樣就會對布局造成困難。同樣實現動畫和Style都需要額外的狀態維護,需要在 imgui 上添加額外的狀態層才能實現動畫/Style.

現在比較流行的兩個imgui庫,ocornut/imgui 和 vurtun/nuklear 前者更早一些,提供了大部分常用控制項的繪製,但是都沒有實現布局/動畫的功能(好像作者也說了不打算實現..),nuklear其實有點跟隨dear-imgui的意思,代碼都實現的差不多。

其實15年的時候Google也出過一個imgui的庫叫FlatUI: Main Page, 這個實現支持布局和動畫,但是反響一般而且現在也不再開發了(原開發也已經離職)。

對於 imgui 的一個錯誤的認識是不能實現複雜的gui系統,其實並不是這樣的,典型的例子是untiy3D的IDE就是一個imgui實現,而且很多遊戲開發工具也是用 imgui 實現的。另外說一下 ocornut/imgui 的代碼質量一般。

最後推廣一下自己的imgui實現: KorokEngine-GUI , 這其實是我們引擎的GUI系統,現在已經支持了三種基本的布局方式(水平/垂直/浮動)。

有興趣的同學可以關注我們的項目:KorokEngine/Korok

項目進度我一般會寫在知乎想法和Twitter上: https://twitter.com/ntoooop


評價一個GUI,真的不能看他的圖,得親自拿來做一個進銷存的軟體,排除一切美術功底帶來的demo的幻覺,看看實戰會不會跪(逃

我覺得這種demo功能可以很簡單,就是把全國的銷售記錄算成幾個賬單走一下流程讓各級領導蓋章,然後workflow倒回來,最終列印。你怎樣用GUI把它表達出來,這些設計都很成熟了。

然後看看這個開發的過程爽不爽,爽了,這就是個好GUI。

最後推銷一下自己的 gaclib.net (逃


一個看他的readme之前完全想不到拿來用C++快速開發編輯器之類的有多方便的庫。

隨手搜了一個神仙做的

當然也可以去看ocornut收錄的各路神仙用imgui做的截圖合集

Gallery: Post your screenshots / code here (PART 1) · Issue #123 · ocornut/imgui?

github.com圖標


最近也跟朋友( @孤獨的守候 @大兵們飛起來 )一起維護了一個imguiDock, 歡迎star。

BentleyBlanks/imguiDock?

github.com圖標


記得去年GDC上, Insomniac 公司的程序員 Andreas 分享了一個 Postmortem[1],講他們公司原本那套基於Web開發的工具集用了這麼多年下來感覺問題挺多,所以重新用Qt造輪子了。

估計會後有一群熱心的同行孜孜不倦的問他為什麼不用用IMGUI呢?

於是回去之後他寫了一篇博客來回應這個問題[2].

這篇回應引起了另一個熱心的遊戲開發者 Бранимир Кара?и? 的強烈興趣, 於是寫了一篇洋洋洒洒數千字的安利文 ——"Why I think Immediate Mode GUI is way to go for GameDev tools".[3]

在結尾處還不忘單方面宣布自己的勝利:

My prediction is that in a few years Insomniacs tools team will come up

with another GDC postmortem explaining whats wrong with Qt, and why

they switched from Qt to IMGUI. Im just joking here, but you never

know... :)

為了寫這個回答我特地再去Gist上看了這篇文章。讓我吃驚的是,都快過去一年了,這篇文章還一直在被完善。一個月前還添加了幾個成功案例的消息。所以題主要是對這塊方面感興趣或許可以從這裡作為切入點。

[1] Insomniacs Web Tools: A Postmortem

[2] Why Qt and not IMGUI?

[3] https://gist.github.com/bkaradzic/853fd21a15542e0ec96f7268150f1b62


很好地一個UI庫 已經入坑在用了。雖然對有些控制項的用法 還不是特別理解。

感覺就是簡單吧。

比C#的winform還要簡單。

當然不管怎樣你得熟悉控制項函數的含義以及哪些地方能夠調用,哪些地方不能調用。哪些控制項中不能夠包含哪些控制項 等等。當然項目是開源的,自己可以改。

社區還是很活躍的,使用者 也很多,很多使用者,貢獻各種思路。

看到不少使用者自己 擴展實現了非常複雜的UI。


推薦閱讀:

EID主題皮膚設計小課堂:手機QQ主題皮膚設計

TAG:GUI設計 |