『Dear ImGui』—— 即时模式 GUI 库的王者

2026/06/08 dev imgui · dear-imgui · immediate-mode · cpp · game-dev · gui-framework 2022 字 · 约 6 分钟 阅读
Dear ImGui 是即时模式(Immediate Mode)C++ GUI 库(73,741 Stars),每帧声明式构建 UI,支持 DX9-12/Vulkan/Metal/OpenGL 等 20+ 渲染后端,是游戏引擎工具链的首选。

项目简介

Dear ImGui(ocornut/imgui)是一款轻量级的即时模式(Immediate Mode)C++ GUI 库。它采用极简 API 设计,每帧由开发者声明 UI 状态,输出顶点缓冲供 3D 渲染管线消费,自 2014 年发布以来已成为游戏引擎工具链的首选 GUI 解决方案。

截至 v1.92.8(2026-05-12),项目已积累超过 73,000 Stars,是 GitHub 上最受欢迎的 C++ GUI 库之一。其核心理念是”为开发者服务”——它不追求制作精美的最终用户界面,而是专注于为工具链和调试场景提供极速、灵活、低耦合的交互方案。

GitHub 数据

指标数据
Stars73,741
Forks11,803
LicenseMIT
LanguageC++
当前版本v1.92.8(2026-05-12)
创建时间2014-07-21
维护状态极其活跃,频繁发版

核心功能

  • 即时模式 API:每帧声明 UI 布局与交互逻辑,无需事件回调、无需维护控件状态树
  • 20+ 渲染后端:支持 DirectX 9/10/11/12、Vulkan、Metal、OpenGL 2/3、WebGPU、SDL 等几乎所有主流图形 API
  • 丰富控件库:Button、Slider、InputText、ComboBox、Tree、Table、Plot、ColorEdit 等
  • Docking 系统:可拖拽停靠的窗口系统,支持标签页、分割面板
  • 内置 Demo 与调试窗口:开箱即用的 ImGui Demo,涵盖所有功能的示例代码
  • ImDrawList 自定义绘图:底层绘图接口,可绘制任意形状、线条、纹理
  • 零外部依赖:纯 C++17 实现,仅需标准 C++ 运行时
  • 200+ 社区扩展:涵盖文件浏览器、节点编辑器、Markdown 渲染、图像处理等

技术栈

技术说明
核心语言纯 C++17(自包含,无 STL 以外依赖)
渲染后端DX9-12 / Vulkan / Metal / OpenGL / WebGPU / SDL
多语言绑定Python(pyimgui)、Rust(imgui-rs)、C#(ImGui.NET)、Go、Lua、JavaScript 等
构建集成最简单方式:直接复制源文件到项目
编译器支持 MSVC、GCC、Clang

使用方式

Dear ImGui 的集成极为简单,业界称为”1 小时集成”:

  1. 从仓库复制 imgui*.cppimgui*.h 源文件到项目
  2. 选择并复制对应渲染后端的文件(如 imgui_impl_dx11.cppimgui_impl_win32.cpp
  3. 在应用初始化时调用 ImGui::CreateContext()
  4. 每帧循环中调用 ImGui_ImplXXXX_NewFrame()ImGui::NewFrame() → 声明 UI → ImGui::Render()
  5. 将 ImGui 输出的顶点缓冲提交到 GPU 渲染管线

适用场景

  • 游戏引擎内嵌工具:Unreal Engine、Unity、Godot 等引擎的编辑器面板
  • 3D 应用工具:3ds Max、Blender 等数字内容创作工具的调试面板
  • 调试与 Profiling:运行时性能监控、内存分析、日志查看器
  • 数据可视化:实时数据仪表盘、图表展示
  • 嵌入式与主机 GUI:PS5、Switch、移动设备等平台的开发工具界面
  • 内部开发工具:资产浏览器、场景编辑器、粒子编辑器等

竞品对比

特性Dear ImGuiQtnuklearFLTKRmlUi
UI 模式即时模式(Immediate)保留模式(Retained)即时模式保留模式保留模式
跨平台✅ 通过渲染后端✅ 原生
包体大小~200KB(核心)数十 MB~100KB数 MB~2MB
外部依赖零依赖QtCore/QtWidgets零依赖X11/Win32HTML/CSS 解析器
学习曲线极低中高
控件丰富度★★★★☆★★★★★★★★☆☆★★★☆☆★★★★☆
Docking 系统✅ 内置✅ QDockWidget
3D 渲染管线✅ 原生输出顶点缓冲❌ 桌面控件✅ 可接入
最终用户 UI❌ 不适用✅ 适合❌ 工具为主✅ 适合✅ 适合
社区扩展200+极丰富较少较少较少
典型场景游戏引擎工具、调试界面跨平台桌面应用嵌入式工具桌面小工具Web 式界面游戏 UI

Dear ImGui 的核心差异

  1. 即时模式哲学:每帧重新声明 UI,无需维护控件状态,代码更简洁、调试更直观
  2. 开发者工具专用:不适用于最终用户产品 UI,专为工具链场景优化
  3. GPU 渲染原生:直接输出顶点缓冲给 3D 管线,与游戏/图形应用完美融合
  4. 集成成本极低:复制源码即用,没有复杂的构建系统或包管理依赖

参考资料

  • GitHub 仓库:https://github.com/ocornut/imgui
  • 官方 Wiki:https://github.com/ocornut/imgui/wiki
  • 社区扩展列表:https://github.com/ocornut/imgui/wiki/Useful-Extensions
  • 多语言绑定:https://github.com/ocornut/imgui/wiki/Bindings

文档信息

加载评论…