因为我在写 LearnGL 系列笔记的时候,发现没有 GUI 可以用,好蛋疼,然后在 GitHub 上找到一个叫:Dear ImGui,这个IMGUI系统对我来说,太太太完美了,它是用 C++ 编写的一个 IMGUI 系统。
看了下面的 案例截图 你会发现,原来前几年看到的一些大厂的各种 DEMO,或是一些软件原来就是用 Dear ImGui 制作的,Vulkan、OpenGL的一些示例,还有如果你使用过 Unity 的旧版的 IMGUI 系统,你就会发现 Unity 的 IMGUI 接口与 Dear ImGui 的非常类似,因为它们都是按 IMGUI 范例设计的,所以也就说,如果你用过 Unity 旧版 IMGUI 你肯定很容易接受 Dear ImGui 的接口。
Git Hub 上 Dear ImGui 的简述:
Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies
然后我去下载 master 分支,压缩包也就 1.4 MB,基本都是纯代码,编译后更小,难怪它用 Bloat-free 来形容,非常精简的一个GUI 库。
从 What is this library called? 中可得知,作者是从 2014 年开始编写的库,当时没想好名字,就暂时用了 ImGui 的名字。但是 IMGUI 这个术语很早之前就有提出来,IMGUI == Immediate-Mode Graphical User Interface,即时模式的图形用户接口,它是 Casey Muratori 提出来的,如果你想了解 IMGUI 范例,可以查看:http://www.johno.se/book/imgui.html,http://mollyrocket.com/861 或是在下面提到的 FAQ 中的更多的链接,或是 wiki 中的 Paradigm。Unity 用它来实例了自己的 IMGUI 范例。所以作者为了减少歧义,他在 2015.12 将库名改为 Dear ImGui(不是 ImGui,也不是IMGUI)。
后续更多功能的查阅,可以查看他的 git/wiki:https://github.com/ocornut/imgui/wiki
其中有一些不错的小部件:useful-widgets–references
也一些不错的文章:articles-about-dear-imgui
我自己粗略阅读过,也不是每个都不错,下面将一些我自己看过觉得不错的博客都列出来:
英文的视频:
ImGui in OpenGL英文的文章:
C++ desktop application with Dear Imgui日语的 qiita 上的文章:
OpenGLやDirectXなGUIにimguiが最強すぎるimguiのwindowの中で3d cubeの描画をしてやった如果你想用 Dear ImGui 来制作软件,或是游戏引擎的GUI,可以使用他目前的 docking 分支的。
未来作者会合并到 master 分支,现在还在完善中。
值得一提的 Upcoming 内容:
而且他的 docking 和一般的 docking 还不一样,可以跨窗体。他的 multiple viewport 也不一般,可以将窗体内的内容绘制到窗体外,即:ImGuiWindow 可以绘制到 host window 外。他的 table 也是做的强大又美观Dear ImGui docking,可以查看: https://ruurdsdevlog.wordpress.com/2020/03/07/c-desktop-application-with-dear-imgui/
docking 的可以再查考 wiki 上的各个推荐的 blog 或是 video
后面如果要给图片做一个资源管理,或是 材质系统管理,都需要了解如何加载图片
当然这些内容现在还没有引入到 master 分支,还在完善开发中,所以如果感兴趣可以 watch 持续关注这位大神 git。
为了提起你对 Dear ImGui 的兴趣我将一些截图放上来。