← 返回项目列表
总结:Dear ImGui 是 C++ 生态中最受欢迎的即时模式 GUI 库(75,000+ Stars,MIT 协议),由 Omar Cornut 独立开发和维护超 10 年,以"零依赖、单文件集成、输出优化顶点缓冲"的极致轻量设计,成为游戏引擎工具链、实时 3D 应用、嵌入式系统和调试面板的事实标准。核心价值在于让开发者用极低代码量(几行 C++)在几分钟内为任何 3D 管线应用添加功能齐全的工具 UI——它不做面向终端用户的 UI,而是专为开发者内部工具/编辑器而生。

1. 项目概览

1.1 基本信息

维度信息
项目名称Dear ImGui (Immediate Mode Graphical User interface)
组织/作者ocornut / Omar Cornut(法国独立开发者,前 Media Molecule 工程师)
GitHubhttps://github.com/ocornut/imgui
开源协议MIT——极宽松,允许闭源商用,几乎无限制(仅需保留版权声明)
主要语言C++(C++11 起;另有 C++20 模块支持)
Star 数75,000+(2026-07 查询,GitHub C++ GUI 类目第一)
累计提交10,000+ Commits
Release 数155 Tags,约 40+ 个正式 Release(v1.0 ~ v1.92.6)
贡献者400+
创建时间2014 年 7 月(原型始于 2012 年,最初在 Media Molecule 内部用于游戏 Tearaway
最近更新2026-07-24(持续每日活跃开发)
官网https://www.dearimgui.com
语言生态第三方绑定覆盖 40+ 语言:C、C#、Python、Rust、Go、Java、Lua、Zig、Swift 等
框架集成可嵌入 UnityUnreal Engine 4/5GodotBlenderQtCocos2d-xDefoldPhotoshop

1.2 项目定位

Dear ImGui 不是传统的"桌面应用 GUI 框架"(如 Qt、GTK)。它定位于一个极简、高性能、渲染器无关的即时模式 GUI 库,专为以下场景设计:

  • 游戏引擎内的开发工具(材质编辑器、关卡编辑器、动画蓝图调试)
  • 实时 3D 应用的调试/HUD 叠加层(性能分析器、状态监控面板)
  • 内容创作工具的 UI(3D 建模器、动画编辑器的内部面板)
  • 嵌入式/主机平台的非标准 UI(Nintendo Switch、PlayStation、Android 等)
  • 科学计算/数据可视化的参数调节面板
  • 快速原型与临时工具(Hot Reload 期间就地加按钮调试变量)

项目的核心哲学浓缩为一句话:"代码即 UI"——没有 UI 设计器、没有 XML/JSON 布局文件、没有样式表,开发者直接用 C++ 函数调用描述每一帧的 UI 结构,UI 逻辑与业务逻辑天然融合。

1.3 发展历程

阶段时间关键事件
原型期2012 年Omar Cornut 在 Media Molecule 期间构思并原型化 ImGui 概念,首次用于 PS Vita 游戏 Tearaway
开源发布2014 年 7 月首个公开版本在 GitHub 发布(MIT 协议),迅速在游戏开发者社区获得关注
社区爆发2014-2017 年凭借极简集成体验,在游戏行业中快速传播;大量第三方绑定和扩展涌现;Omar 业余维护
全职投入2017 年底Omar 离开雇主,全职投入 Dear ImGui 开发维护,依靠企业赞助和商业支持合同维持
Docking 分支2018 年推出 docking 分支,引入 Docking(停靠面板)Multi-Viewport(多视口) 两大旗舰功能
Tables API2021 年v1.83 引入完整的 Tables API,媲美专业表格控件的列排序/筛选/冻结等能力
Test Engine2021 年发布闭源商业产品 Dear ImGui Test Engine,为企业提供自动化测试套件
十年里程碑2024 年发布 v1.91,回顾十年历程:从内部工具到 75,000+ Stars 的全球性基础设施级项目
当前2024-2026 年持续高频迭代(v1.92.x),重点在 Metal 4 后端、WebGPU、性能优化和社区治理

2. 核心能力

2.1 即时模式 GUI 范式(Immediate Mode GUI)

Dear ImGui 的核心创新在于即时模式编程范式,与 Qt/MFC/GTK 等保留模式(Retained Mode)形成根本性区别:

保留模式(传统):创建持久化的 UI 对象树 → 注册事件回调 → 框架管理生命周期和状态同步 → 数据变更时手动更新 UI 对象。

即时模式(ImGui):每帧都在主循环中直接调用 UI 函数 → 函数立即返回交互结果 → 无持久化 UI 对象、无事件回调、无状态同步。

// 典型 ImGui 使用模式——代码即 UI,无回调地狱
ImGui::Begin("Inspector");
ImGui::SliderFloat("Speed", &speed, 0.0f, 10.0f);
if (ImGui::Button("Reset")) { speed = 1.0f; }  // 按钮点击直接内联处理
ImGui::End();

开发效率跃升:将"创建 UI → 连接信号槽 → 管理生命周期 → 处理事件"的 4 步流程压缩为"写函数调用"1 步。

2.2 窗口与布局系统

  • 多窗口管理:支持拖拽、缩放、折叠、滚动、子窗口嵌套
  • Docking(停靠面板):类似 Visual Studio 的 IDE 式布局,可将窗口停靠/分离/标签化(docking 分支)
  • Multi-Viewport(多视口):将 ImGui 窗口拖出主窗口到独立的操作系统窗口中(多显示器支持)
  • Columns / Tables:列布局和完整的数据表格控件(排序、筛选、固定列、行选择)
  • Menu Bar:完整菜单栏/上下文菜单/弹出菜单支持

2.3 内置控件库

类别控件
文本Text, TextColored, TextWrapped, LabelText, BulletText, SeparatorText
按钮Button, SmallButton, ArrowButton, InvisibleButton, ImageButton, RadioButton
输入InputText(单行/多行/密码/数字), InputInt, InputFloat, InputDouble
滑动条SliderFloat, SliderInt, SliderAngle, VSliderFloat, SliderScalar
拖拽DragFloat, DragInt, DragScalar(精度可控拖拽调整)
选择器Checkbox, Combo, ListBox, Selectable(支持多选)
颜色ColorEdit3/4(RGB/HSV 颜色编辑器+拾色器)
日期时间DatePicker, TimePicker(第三方扩展,ImGui 源生支持自定义)
树形控件TreeNode, TreeNodeEx, CollapsingHeader
表格BeginTable / EndTable(排序、列宽调整、固定行列、筛选、跨单元格)
Tab 页TabBar / TabItem
弹窗OpenPopup, BeginPopup, BeginPopupContextItem, BeginPopupModal
提示Tooltip, BeginTooltip, SetTooltip
进度与图表ProgressBar, PlotLines, PlotHistograms
子窗口BeginChild(独立滚动区域)
无边框绘制ImDrawList API:直接绘制线、矩形、圆、多边形、贝塞尔曲线、文本、图像

2.4 扩展生态系统(核心扩展)

扩展说明
ImPlot即时模式 2D 图表库(折线、散点、柱状、饼图、热力图等),6,500+ Stars
ImPlot3D即时模式 3D 图表库
ImGuizmo3D 空间变换组件(平移/旋转/缩放,类似 Unity 编辑器)
ImNodes节点编辑器(蓝图/材质编辑器风格)
Dear ImGui Test Engine官方闭源自动化测试引擎(商业授权)
imnodes交互式节点图编辑器
ImGuiColorTextEdit语法高亮文本编辑器
imgui_markdownMarkdown 渲染器

2.5 渲染器与平台后端

Dear ImGui 通过"核心 + 后端"分离架构,实现了与几乎所有图形 API 和平台框架的对接。

官方维护的后端(随仓库发布):

类型支持列表
图形 APIDirectX 9/10/11/12OpenGL 2/3/ES2/ES3VulkanMetal 3/4WebGPUSDL_GPUSDL_Renderer2/3
平台层Win32GLFWSDL2/SDL3OSX (Cocoa)AndroidGlut
框架Allegro5Emscripten (WebAssembly)

第三方框架绑定(约 50+):Unity、Unreal Engine 4/5、Godot、Qt/QtDirect3D、Cocos2d-x、Defold、Blender、Photoshop、raylib、SFML、Sokol、Ogre3D、Nintendo Switch/WiiU/3DS (homebrew) 等。

3. 技术架构

3.1 整体架构

Dear ImGui 采用三层解耦架构,将平台无关核心逻辑与平台特定后端彻底分离:

┌──────────────────────────────────────────────┐
│                  用户代码                       │
│  (ImGui::Text/Button/Slider/Window 等 API)    │
├──────────────────────────────────────────────┤
│              核心库(平台无关)                  │
│  imgui.cpp      → UI 逻辑、布局引擎、ID 系统    │
│  imgui_draw.cpp  → 几何生成、顶点缓冲输出       │
│  imgui_widgets.cpp → 内置控件实现               │
│  imgui_tables.cpp  → 表格系统                  │
│  imgui.h         → 公共 API 头文件             │
│  imgui_internal.h → 内部 API(高级定制用)       │
│  imgui_demo.cpp  → 完整 Demo 窗口(文档+示例)   │
├──────────────────────────────────────────────┤
│              平台/渲染器后端                    │
│  平台后端: imgui_impl_win32/glfw/sdl/...      │
│  → 处理键盘/鼠标/游戏手柄/剪贴板/IME 输入       │
│  渲染后端: imgui_impl_dx11/vulkan/opengl3/... │
│  → 上传字体纹理、渲染 ImDrawData 到 GPU        │
├──────────────────────────────────────────────┤
│              GPU / 操作系统                     │
└──────────────────────────────────────────────┘

核心数据流

  1. Input Phase:平台后端采集键盘/鼠标/触摸/手柄事件,写入 ImGuiIO 结构体
  2. New FrameImGui::NewFrame() 重置内部状态,准备新一帧的 UI 构建
  3. UI Construction:用户代码调用 ImGui::Begin/Button/Slider/End 等构建 UI,框架即时计算布局
  4. RenderImGui::Render() 生成 ImDrawData(顶点缓冲 + 绘制命令列表)
  5. GPU Submission:渲染后端将 ImDrawData 转换为 GPU 绘制调用

3.2 关键设计原理

即时模式 ≠ 即时渲染:Dear ImGui 每帧构建 UI 逻辑树,但不立即向 GPU 发送绘制调用。它在 Render() 阶段将整个 UI 批处理为一组优化的顶点缓冲和绘制命令——这与传统即时模式渲染有本质区别,避免了大量零散的 draw call。

ID 堆栈系统:ImGui 通过 ID 堆栈(PushID/PopID)为每个控件分配唯一标识符,以此追踪哪些控件在帧间保持一致(用于保留焦点、滚动位置等少量 UI 状态)。这是一种强制性的"受控状态保留"——框架接管了极少但必要的 UI 状态管理。

零外部依赖:核心库仅引用 3 个内置的 STB 单头文件库(stb_rectpack.hstb_textedit.hstb_truetype.h),所有字体光栅化、文本编辑逻辑均在仓库内自行实现,真正做到"clone 即用"。

4. 市场定位与竞品分析

4.1 竞争格局

Dear ImGui 的竞争对手可按下述三类划分:

A. 传统保留模式 GUI 框架(不同赛道,但部分场景重叠)

维度Dear ImGuiQtGTK/gtkmmwxWidgets
编程范式即时模式保留模式(信号槽)保留模式(信号)保留模式(事件表)
学习成本极低(几行代码入门)高(MOC 预编译、元对象系统)中高
运行时开销极低(~1MB 核心)高(~50MB+ 基础库)
渲染方式输出顶点缓冲→用户渲染自绘/平台原生控件平台原生控件平台原生控件
面向用户开发者/内部工具终端用户终端用户终端用户
跨平台依赖图形 API完善(含移动端)完善完善
主题/样式编程式定制QSS(类 CSS)CSS平台原生
国际化基础(无 RTL/双向文本)完善完善完善
许可证MITLGPL/商用LGPLwxWindows License
Star 数75,000+

B. 同赛道即时模式 GUI 库

维度Dear ImGuiNuklearRmlUiNanoGUI
Stars75,000+~9,000~3,300~1,100
范式即时模式纯代码即时模式纯代码HTML/CSS 声明式保留式 + NanoVG
语言C++C (ANSI)C++C++
许可证MITMIT/Public DomainMITBSD
依赖零外部依赖零外部依赖少量依赖NanoVG + GLFW
成熟度极高(10年+,400+贡献者)中(维护不活跃)
社区生态极丰富(40+语言绑定,数百扩展)一般一般
内置控件极丰富(表格/Docking/Tab/菜单等)基础基于HTML/CSS控件集基础
图形 APIDX9-12/GL/Vulkan/Metal/WebGPUGL/Vulkan/DX自定义渲染后端GL / Metal
特色Docking/Multi-Viewport纯 C 实现,极简设计师友好(类 CSS)Retina 支持

C. 游戏引擎内置 UI 系统

引擎方案与 Dear ImGui 关系
Unreal EngineUMG (Unreal Motion Graphics) / SlateImGui 常用于编辑器内调试面板,大量插件将其嵌入 UE
UnityUGUI / UI Toolkit / IMGUI(遗留)Unity 编辑器中 IMGUI 系统正是受 Dear ImGui 启发
Godot内置 Control 节点系统第三方集成 ImGui 用于编辑器扩展

4.2 差异化优势

  1. 集成速度无人能及:10 分钟内集成到任意 C++ 3D 应用(复制 3 个 .cpp + 3 个 .h 到工程,编译,在主循环加 5 行代码)
  2. 渲染器不可知论:不绑定任何图形 API,"只要能画纹理三角形就能渲染 ImGui",适配所有主流 API 且可自定义
  3. 社区规模断层领先:75,000+ Stars,远超所有竞品之和;40+ 语言绑定生态,形成正反馈循环
  4. 性能极致优化:核心 ~1MB,帧成本极低(通常 < 0.5ms),适合嵌入到对帧预算敏感的 3A 游戏和主机平台
  5. 工业级验证:被 Blizzard、Ubisoft、Epic、Sony、EA、Nintendo 等一线游戏公司的内部引擎和工具链使用
  6. MIT 协议零摩擦:无商用顾虑,无传染性条款,无需开源衍生代码

4.3 目标用户群

用户群体典型场景使用动机
游戏开发者游戏内调试面板、关卡编辑器、材质/动画编辑器、性能 Profiler、AI 行为树调试极低集成成本,不影响游戏渲染管线
引擎/中间件开发者引擎内置工具 GUI、渲染参数调节面板、场景检查器为引擎用户提供轻量工具界面
实时 3D/VR/AR 开发者渲染参数调节、场景编辑、空间标注支持自定义渲染后端,可嵌入任意 3D 环境
科学计算/仿真工程师参数扫描面板、仿真状态监控、实时数据可视化快速搭建参数调节界面,配合 ImPlot 绘图
嵌入式/主机开发者设备配置界面、诊断工具、现场调试面板零依赖,可运行在资源受限平台
独立开发者/Hobbyist快速 UI 原型、游戏修改工具、Mod 编辑器无需学习复杂框架,几行代码出界面
企业级工具开发者内部开发工具、数据管道监控、自动化脚本面板相比 Qt 部署轻量,学习曲线平缓

5. 商业模式

Dear ImGui 并非传统商业公司,其运营模式为"开源核心 + 企业赞助 + 闭源增值产品"

模式说明
核心库 MIT 开源Dear ImGui 核心完全免费、MIT 协议,任何个人/企业可无限制使用
企业赞助合同企业通过 invoice-based sponsorship 支持项目持续开发(联系 contact@dearimgui.com),Omar 全职维护
Dear ImGui Test Engine闭源商业产品,提供自动化测试引擎和测试套件,面向需要质量保证的企业客户(独立授权,需联系获取)
个人捐赠通过 PayPal 接受个人开发者捐赠
咨询/支持服务为企业提供私有支持、定制开发咨询(付费)

关键数据

  • 2020 年投入 ~2500 小时 R&D
  • 2021 年投入 ~1600 小时 R&D
  • 商业赞助方(公开):Blizzard、Ubisoft、Epic Games、Sony、Activision、NVIDIA、Google、Adobe、Autodesk、Microsoft 等(详见 Funding Wiki
  • 核心维护者 Omar Cornut 自 2017 年底起全职投入,为该项目持续超过 7 年的全职开发

商业启示:Dear ImGui 是开源可持续发展的成功案例——通过为游戏/工具行业的头部企业提供不可替代的基础设施级价值,换取这些企业自愿性的财务支持。这与 Red Hat 模式不同(不卖订阅),而是靠核心维护者的全职投入 + 头部企业自觉赞助的精英式单点维护模式。

6. 售前切入点

6.1 为什么客户需要它?

问题场景 1:游戏/引擎团队需要为内部工具构建 UI,但又不想引入 Qt 的重量级依赖

一个游戏引擎团队需要为关卡编辑器、材质编辑器、动画状态机等内部工具构建功能齐全的 UI。传统方案是使用 Qt、HTML/CEF 或自研 UI 系统——前者引入数百 MB 依赖和额外构建配置(需要 Qt 维护团队),后者需要投入巨大工程资源且难以维护。Dear ImGui 提供第三种选择:复制几个文件到工程,用写 C++ 函数的方式在几天内搭出功能齐全的工具界面,运行时仅 ~1MB 内存开销,不干扰引擎渲染管线。

问题场景 2:实时 3D/VR 应用中需要叠加调试面板或参数调节 UI

在 Vulkan/DirectX/Metal 等底层图形 API 上运行的实时 3D 应用(仿真训练、数字孪生、自动驾驶可视化),原生 GUI 方案极其稀缺。Dear ImGui 作为渲染器无关的即时模式 UI,可以完美嵌入任何图形管线,开发者可在渲染循环的任意位置插入 UI 调用,无需适配操作系统原生窗口系统。

问题场景 3:嵌入式/主机平台需要开发诊断/配置界面

Nintendo Switch、PlayStation、Xbox 或嵌入式 Linux 设备上,传统 GUI 框架要么不存在,要么资源占用过大。Dear ImGui 的零依赖特性使其可以运行在任何能渲染纹理三角形的平台上,从 Android 到裸机嵌入式均可。

问题场景 4:快速迭代期需要一个"用完即扔"的参数调节界面

开发者在调参(Shader 参数、物理引擎参数、AI 行为权重)时,每次改代码重新编译周期太长。使用 Dear ImGui,可以直接在主循环中加几行 Slider/Input 代码,利用 C++ 的 Edit & Continue (Hot Reload) 即时调参,调好后删掉 UI 代码即可——这种"临时 UI"需求没有任何其他框架能满足。

6.2 售前话术

客户角色话术建议
技术总监/架构师"Dear ImGui 不是又一个大而全的 GUI 框架——它是一个极致的点解决方案:为开发工具和调试面板而生。集成成本为 O(复制文件) 而非 O(引入框架),零运行时负担,MIT 协议无法律风险。Blizzard、Ubisoft、Epic 都在用——这是游戏行业的'基础设施共识'。"
图形/引擎工程师"你可以把 ImGui 看作一个'顶点缓冲工厂'——你的渲染后端只需接收它输出的 ImDrawData 来画纹理三角形,剩下的 UI 交互逻辑框架全包。它不碰你的图形状态,不会打乱你的渲染管线。"
工具链开发者"不用写 XML 布局文件,不用连接信号槽,不用管理窗口生命周期。你需要的每个按钮、滑块、表格,都是一行 C++ 函数调用,在运行时实时构建。Docking 分支让你轻松拼出 Visual Studio 级别的复杂工具界面。"
项目经理/采购决策者"社区 75,000+ Stars 证明这不是玩具项目,而是经过 10 年打磨的生产级基础设施。MIT 协议意味着零许可证费用和零法律顾虑。如果需要企业级支持和自动化测试,官方有商业 Test Engine 和服务合同可用。"
嵌入式/主机开发者"在 Switch、PS5、嵌入式 Linux 上跑 Qt 几乎不可能,但 Dear ImGui 可以——它核心只有几个 .cpp 文件,零外部依赖,内存占用极低,只要你的平台能画纹理三角形就行。"

7. 风险与挑战

风险严重程度描述缓解措施
单点维护者风险(Bus Factor=1)🔴 高Omar Cornut 是唯一核心维护者,若他无法继续维护,项目可能面临停滞项目已建立完善的 CI/CD 和测试体系;社区贡献者基础广泛(400+);企业可考虑与 Omar 建立商业关系获取 SLA 保障
不适合终端用户应用程序🟡 中(需正确选型)无原生操作系统控件(文件对话框、系统托盘等)、无辅助功能、无真正 RTL/国际化支持、无面向消费者的 UI/UX对内部工具/调试面板场景影响很小;可与 Qt 等传统框架混合使用(Qt 做主体 UI,ImGui 做内嵌工具面板)
Docking 分支与 master 分支分离🟡 中Docking/Multi-Viewport 功能在 docking 分支长期开发,尚未合并 master(虽已高度可用)分支定期与 master 同步;生产项目中大量用户已直接使用 docking 分支
主题/样式定制为编程式🟢 低(对目标用户而言)无可视化主题编辑器、无 CSS 式样式表,定制外观需写 C++ 代码操作 ImGuiStyle 结构体对开发者工具场景可接受;第三方主题库(ImThemes)提供丰富预设
高 DPI / 多分辨率适配需手动处理🟢 低无自动布局管理器(如 Qt Layout),复杂布局需手动计算坐标和尺寸对于工具 UI 场景,相对坐标计算可接受;GetContentRegionAvail() 等辅助函数简化适配
企业支持非标准化🟡 中不像 Red Hat 或 Qt Company 提供 SLA 保障的企业支持计划可通过直接联系 Omar 获取商业支持合同;社区 GitHub Issues/Discussions 响应速度通常很快
学习范式转换成本🟢 低习惯保留模式(Qt/MFC)的开发者需要适应"每帧重建 UI"的思维模式上手极快(几小时内可产出功能 UI);丰富的 Demo 窗口和文档降低了转换成本

8. 一句话结论

Dear ImGui 是面向 C++ 开发者工具和调试 UI 的"瑞士军刀"——它不是 Qt 的替代品,而是填补了一个 Qt 永远无法填满的生态位:在 3D 管线应用中用最小摩擦、最低成本、最快速度构建功能齐全的内部工具界面。对游戏工作室、引擎团队、嵌入式开发者、实时 3D 应用开发者而言,引入 Dear ImGui 是低风险、高回报的基础设施级决策——10 分钟集成换来数年效率提升,MIT 许可证零成本零风险,75,000+ Stars 的社区认可度和 Ubisoft/Blizzard/Epic/Sony 等头部用户的背书已充分验证其生产级可靠性。