ocornut/imgui
GitHub: ocornut/imgui
一款轻量、无依赖的 C++ 即时模式 GUI 库,专为快速构建调试工具、内容创作工具和数据可视化界面而设计。
Stars: 71702 | Forks: 11592
# Dear ImGui
"给某人一个状态,他一天后就会有一个 bug;但教他如何在两个必须保持同步的独立位置表示状态,他将终身与 bug 为伴。" -ryg
[](https://github.com/ocornut/imgui/actions?workflow=build) [](https://github.com/ocornut/imgui/actions?workflow=static-analysis) [](https://github.com/ocornut/imgui_test_engine/actions?workflow=tests)
(本库在免费且宽松的许可证下可用,但需要资金支持以维持其持续改进。除了维护和稳定性之外,还有许多理想的功能有待添加。如果您的公司正在使用 Dear ImGui,请考虑联系我们。)
企业用户:通过开具发票的赞助/支持合同来支持持续的开发和维护:
_电子邮箱:contact @ dearimgui dot com_
个人用户:在[此处](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WGHNC6MBFLZ2S)支持持续的开发和维护。另请参阅 [Funding](https://github.com/ocornut/imgui/wiki/Funding) 页面。 | [简介](#the-pitch) - [用法](#usage) - [工作原理](#how-it-works) - [版本与更新日志](#releases--changelogs) - [演示](#demo) - [入门与集成](#getting-started--integration) | :----------------------------------------------------------: | | [作品展示](#gallery) - [支持,常见问题](#support-frequently-asked-questions-faq) - [如何帮助](#how-to-help) - **[资助与赞助商](https://github.com/ocornut/imgui/wiki/Funding)** - [致谢](#credits) - [许可证](#license) | | [Wiki](https://github.com/ocornut/imgui/wiki) - [扩展](https://github.com/ocornut/imgui/wiki/Useful-Extensions) - [语言绑定与框架后端](https://github.com/ocornut/imgui/wiki/Bindings) - [使用 Dear ImGui 的软件](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui) - [用户评价](https://github.com/ocornut/imgui/wiki/Quotes) | ### 简介 Dear ImGui 是一个**无臃肿的 C++ 图形用户界面库**。它输出优化过的顶点缓冲区,您可以在启用了 3D 管线的应用程序中随时对其进行渲染。它速度快、可移植、与渲染器无关且自包含(无外部依赖)。 Dear ImGui 的设计旨在**实现快速迭代**,并**赋能程序员**创建**内容创作工具和可视化/调试工具**(而非面向普通终端用户的 UI)。为了实现这一目标,它倾向于简单和高产,因此缺乏某些更高级库中常见的功能。除其他外,不支持完整的国际化(从右到左文本、双向文本、文本整形等)和无障碍功能。 Dear ImGui 特别适合集成到游戏引擎(用于工具开发)、实时 3D 应用程序、全屏应用程序、嵌入式应用程序,或任何操作系统功能非标准的控制台平台应用程序中。 - 最小化状态同步。 - 最小化用户端的 UI 相关状态存储。 - 最小化设置和维护工作。 - 易于创建作为动态数据集镜像的动态 UI。 - 易于创建代码驱动和数据驱动的工具。 - 易于创建临时的短期工具以及长期、更复杂的工具。 - 易于修改和改进。 - 可移植,最小化依赖,可在目标平台(游戏主机、手机等)上运行。 - 高效的运行时和内存消耗。 - 经过实战检验,被[游戏行业的许多主要参与者](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui)使用。 ### 用法 **Dear ImGui 的核心包含在几个与平台无关的文件中**,您可以轻松地在您的应用程序/引擎中编译它们。即仓库根文件夹中的所有文件(`imgui*.cpp`、`imgui*.h`)。**不需要特定的构建过程**:您可以将所有文件添加到您现有的项目中。 [backends/](https://github.com/ocornut/imgui/tree/master/backends) 文件夹中提供了**适用于各种图形 API 和渲染平台的后端**,[examples/](https://github.com/ocornut/imgui/tree/master/examples) 文件夹中还提供了示例应用程序。您也可以创建自己的后端。任何可以渲染带纹理三角形的地方,都可以渲染 Dear ImGui。 希望使用 module 的 C++20 用户可以使用第三方扩展 [stripe2933/imgui-module](https://github.com/stripe2933/imgui-module)。 有关更多详细信息,请参阅本文档的 [入门与集成](#getting-started--integration) 部分。 在您的应用程序中设置好 Dear ImGui 后,您可以在程序循环的\_任何地方\_使用它: ``` ImGui::Text("Hello, world %d", 123); if (ImGui::Button("Save")) MySaveFunction(); ImGui::InputText("string", buf, IM_COUNTOF(buf)); ImGui::SliderFloat("float", &f, 0.0f, 1.0f); ```
```
// Create a window called "My First Tool", with a menu bar.
ImGui::Begin("My First Tool", &my_tool_active, ImGuiWindowFlags_MenuBar);
if (ImGui::BeginMenuBar())
{
if (ImGui::BeginMenu("File"))
{
if (ImGui::MenuItem("Open..", "Ctrl+O")) { /* Do stuff */ }
if (ImGui::MenuItem("Save", "Ctrl+S")) { /* Do stuff */ }
if (ImGui::MenuItem("Close", "Ctrl+W")) { my_tool_active = false; }
ImGui::EndMenu();
}
ImGui::EndMenuBar();
}
// Edit a color stored as 4 floats
ImGui::ColorEdit4("Color", my_color);
// Generate samples and plot them
float samples[100];
for (int n = 0; n < 100; n++)
samples[n] = sinf(n * 0.2f + ImGui::GetTime() * 1.5f);
ImGui::PlotLines("Samples", samples, 100);
// Display contents in a scrolling region
ImGui::TextColored(ImVec4(1,1,0,1), "Important Stuff");
ImGui::BeginChild("Scrolling");
for (int n = 0; n < 50; n++)
ImGui::Text("%04d: Some text", n);
ImGui::EndChild();
ImGui::End();
```

Dear ImGui 允许您**创建复杂的工具**以及非常短命的工具。在短期使用的极端情况下:利用现代编译器的 Edit&Continue(热代码重载)功能,您可以在应用程序运行时添加一些小部件来调整变量,并在一分钟后删除该代码!Dear ImGui 不仅仅用于调整数值。您可以通过仅发出文本命令来使用它跟踪正在运行的算法。您可以将它与您自己的反射数据一起使用,以实时浏览数据集。您可以用它来暴露引擎中子系统的内部结构,以创建日志记录器、检查工具、分析器、调试器,甚至是整个游戏制作编辑器/框架等。
### 工作原理
IMGUI 范式通过其 API 试图从用户的角度最大限度地减少多余的状态复制、状态同步和状态保留。它比传统的保留模式接口更不易出错(代码更少,bug 更少),并且适合创建动态用户界面。请查阅 Wiki 的 [About the IMGUI paradigm](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) 部分以了解更多详情。
Dear ImGui 输出顶点缓冲区和命令列表,您可以轻松地在应用程序中渲染它们。渲染它们所需的 draw call 和状态更改次数相当少。因为 Dear ImGui 不知道也不直接接触图形状态,您可以在代码的任何地方调用其函数(例如,在运行算法的中间,或在您自己的渲染过程中)。请参阅 examples/ 文件夹中的示例应用程序,获取有关如何将 Dear ImGui 与您现有代码库集成的说明。
_一个常见的误解是将即时模式 GUI 与即时模式渲染混为一谈,后者通常意味着在调用 GUI 函数时用一堆低效的 draw call 和状态更改来轰炸您的驱动程序/GPU。这**不是** Dear ImGui 所做的。Dear ImGui 输出顶点缓冲区和一小组 draw call 批次。它从不直接接触您的 GPU。draw call 批次相当优化,您可以稍后在您的应用程序中甚至远程渲染它们。_
### 版本与更新日志
有关带装饰的更新日志,请参阅 [Releases](https://github.com/ocornut/imgui/releases) 页面。
阅读更新日志是了解 Dear ImGui 所提供功能的好方法,也许还能给您带来一些关于您一直忽略的功能的灵感!
### 演示
调用 `ImGui::ShowDemoWindow()` 函数将创建一个展示各种功能和示例的演示窗口。该代码始终可在 `imgui_demo.cpp` 中找到以供参考。
- [Demo 的 Web 版本](https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html)(含源代码浏览器),由 [@pthom](https://github.com/pthom) 提供。
您应该能够从源代码构建示例。如果不能,请告诉我们!如果您想快速了解 Dear ImGui 的一些功能,可以在此处下载演示应用程序的 Windows 二进制文件:
- [imgui-demo-binaries-20260225.zip](https://www.dearimgui.com/binaries/imgui-demo-binaries-20260225.zip) (Windows, 1.92.6, built 2026/02/25, master) 或 [旧版二进制文件](https://www.dearimgui.com/binaries)。
### 作品展示
使用 Dear ImGui 的示例项目:[Tracy](https://github.com/wolfpld/tracy) (profiler)、[ImHex](https://github.com/WerWolv/ImHex) (十六进制编辑器/数据分析)、[RemedyBG](https://remedybg.itch.io/remedybg) (debugger) 以及[数百个其他项目](https://github.com/ocornut/imgui/wiki/Software-using-Dear-ImGui)。
有关更多用户提交的使用 Dear ImGui 的项目截图,请查看 [Gallery Threads](https://github.com/ocornut/imgui/issues?q=label%3Agallery)!
有关第三方小部件和扩展的列表,请查看 [Useful Extensions/Widgets](https://github.com/ocornut/imgui/wiki/Useful-Extensions) wiki 页面。
| | |
|--|--|
| 自定义引擎 [erhe](https://github.com/tksuoran/erhe) (docking 分支)
[](https://user-images.githubusercontent.com/994606/147875067-a848991e-2ad2-4fd3-bf71-4aeb8a547bcf.png) | 用于 [Wonder Boy: The Dragon's Trap](http://www.TheDragonsTrap.com) 的自定义引擎 (2017)
[](https://cloud.githubusercontent.com/assets/8225057/20628927/33e14cac-b329-11e6-80f6-9524e93b048a.png) | | 自定义引擎 (无标题)
[](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/editor_white.png) | Tracy Profiler ([github](https://github.com/wolfpld/tracy))
[](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v176/tracy_profiler.png) | ### 入门与集成 有关详细信息,请参阅 [入门指南](https://github.com/ocornut/imgui/wiki/Getting-Started)。 在大多数平台上使用 C++ 时,**您应该能够不加修改地使用 [imgui_impl_xxxx](https://github.com/ocornut/imgui/tree/master/backends) 后端的组合**(例如 `imgui_impl_win32.cpp` + `imgui_impl_dx11.cpp`)。如果您的引擎支持多个平台,请考虑使用更多的 imgui_impl_xxxx 文件而不是重写它们:这对您来说工作量更少,并且您可以立即运行 Dear ImGui。如果您愿意,您可以_稍后_决定使用您的自定义引擎函数重写自定义后端。 将 Dear ImGui 集成到您的自定义引擎中主要涉及:1) 连接鼠标/键盘/手柄输入 2) 将纹理上传到您的 GPU/渲染引擎 3) 提供一个可以创建/更新纹理并渲染带纹理三角形的渲染函数。这正是后端所做的工作。 - [examples/](https://github.com/ocornut/imgui/tree/master/examples) 文件夹中包含了设置窗口并使用标准后端的应用程序。 - [入门指南](https://github.com/ocornut/imgui/wiki/Getting-Started) 包含了使用标准后端将 imgui 集成到现有应用程序中的说明。理论上,在链接了支持库的情况下,将 Dear ImGui 集成到您现有的代码库中应该不需要一个小时。如果您仔细阅读,时间会更短。 - [Backends](https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md) 指南解释了后端正在做什么,并提供了实现自定义后端的说明。您也可以参考我们约 20 个后端的源代码来了解它们是如何工作的。 - 通常,**请务必花时间阅读 [FAQ](https://www.dearimgui.com/faq)、注释和示例应用程序!** 官方维护的后端(位于仓库中): - 渲染器:DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL/ES/ES2, SDL_GPU, SDL_Renderer2/3, Vulkan, WebGPU。 - 平台:GLFW, SDL2/SDL3, Win32, Glut, OSX, Android。 - 框架:Allegro5, Emscripten。 [第三方后端/绑定](https://github.com/ocornut/imgui/wiki/Bindings) wiki 页面: - 语言:C, C# 以及:Beef, ChaiScript, CovScript, Crystal, D, Go, Haskell, Haxe/hxcpp, Java, JavaScript, Julia, Kotlin, Lobster, Lua, Nim, Odin, Pascal, PureBasic, Python, ReaScript, Ruby, Rust, Swift, Zig... - 框架:AGS/Adventure Game Studio, Amethyst, Blender, bsf, Cinder, Cocos2d-x, Defold, Diligent Engine, Ebiten, Flexium, GML/Game Maker Studio, GLEQ, Godot, GTK3, Irrlicht Engine, JUCE, LÖVE+LUA, Mach Engine, Magnum, Marmalade, Monogame, NanoRT, nCine, Nim Game Lib, Nintendo 3DS/Switch/WiiU (homebrew), Ogre, openFrameworks, OSG/OpenSceneGraph, Orx, Photoshop, px_render, Qt/QtDirect3D, raylib, SFML, Sokol, Unity, Unreal Engine 4/5, UWP, vtk, VulkanHpp, VulkanSceneGraph, Win32 GDI, WxWidgets。 - 许多绑定是自动生成的(由老牌的 [cimgui](https://github.com/cimgui/cimgui) 或我们较新的 [dear_bindings](https://github.com/dearimgui/dear_bindings) 生成),您可以使用它们的元数据输出为其他语言生成绑定。
[实用扩展/小部件](https://github.com/ocornut/imgui/wiki/Useful-Extensions) wiki 页面:
- 自动化/测试、文本编辑器、节点编辑器、时间轴编辑器、绘图、软件渲染器、远程网络访问、内存编辑器、gizmo 等。著名且维护良好的扩展 [ImPlot](https://github.com/epezent/implot) 和 [Dear ImGui Test Engine](https://github.com/ocornut/imgui_test_engine)。
另请参阅 [Wiki](https://github.com/ocornut/imgui/wiki) 获取更多链接和想法。
### 支持,常见问题解答 (FAQ)
请参阅:[常见问题解答 (FAQ)](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md),其中回答了常见问题。
请参阅:[入门指南](https://github.com/ocornut/imgui/wiki/Getting-Started) 和 [Wiki](https://github.com/ocornut/imgui/wiki) 获取许多链接、参考资料和文章。
请参阅:[关于 IMGUI 范式的文章](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) 以阅读/了解即时模式 GUI 范式。
请参阅:[即将到来的更改](https://github.com/ocornut/imgui/wiki/Upcoming-Changes)。
请参阅:[Dear ImGui Test Engine + Test Suite](https://github.com/ocornut/imgui_test_engine) 了解自动化与测试。
为了让搜索引擎抓取 wiki,这里有一个 [可抓取 Wiki](https://github-wiki-see.page/m/ocornut/imgui/wiki) 的链接(非人类阅读用,[原因在此](https://github-wiki-see.page/))。
刚入门?对于遇到编译/链接/运行问题或字体加载问题的首次用户,请使用 [GitHub Discussions](https://github.com/ocornut/imgui/discussions)。对于任何其他问题、bug 报告、请求、反馈,请在 [GitHub Issues](https://github.com/ocornut/imgui/issues) 上发帖。请仔细阅读并填写 New Issue 模板。
付费企业客户可获得私人支持(电子邮件:_contact @ dearimgui dot com_)。
**我应该使用哪个版本?**
我们偶尔会标记 [Releases](https://github.com/ocornut/imgui/releases)(带有详细的发布说明),但同步到最新的 `master` 或 `docking` 分支通常是安全且推荐的。该库相当稳定,并且报告的回归问题往往会被迅速修复。高级用户可能需要使用带有 [Multi-Viewport](https://github.com/ocornut/imgui/wiki/Multi-Viewports) 和 [Docking](https://github.com/ocornut/imgui/wiki/Docking) 功能的 `docking` 分支。该分支定期与 master 保持同步。
**谁在使用 Dear ImGui?**
请参阅 [Quotes](https://github.com/ocornut/imgui/wiki/Quotes)、[Funding & Sponsors](https://github.com/ocornut/imgui/wiki/Funding) 和 [Software using Dear ImGui](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui) Wiki 页面,了解谁在使用 Dear ImGui。如果可以的话,请添加您的游戏/软件!另外,请查看 [Gallery Threads](https://github.com/ocornut/imgui/issues?q=label%3Agallery)!
## 如何帮助
**我能帮什么忙?**
- 请参阅 [GitHub Forum/Issues](https://github.com/ocornut/imgui/issues)。
- 您可以帮助开发并提交 pull request!请理解,提交 PR 意味着您也在请求维护者审查您的代码,然后永远接手其维护工作。PR 的制作应既符合最终用户的利益,也有助于维护者理解和接受它。
- 在 [Wiki](https://github.com/ocornut/imgui/wiki/) 上查看 [Help wanted](https://github.com/ocornut/imgui/wiki/Help-Wanted) 以获取更多想法。
- 成为一名[资助支持者](https://github.com/ocornut/imgui/wiki/Funding)!让您的公司通过开具发票的赞助/维护或购买 [Dear ImGui Test Engine](https://github.com/ocornut/imgui_test_engine) 的许可证来为该项目提供资金支持(请联系:contact AT dearimgui DOT com)。
## 许可证
Dear ImGui 根据 MIT 许可证授权,有关更多信息,请参阅 [LICENSE.txt](https://github.com/ocornut/imgui/blob/master/LICENSE.txt)。
_电子邮箱:contact @ dearimgui dot com_
个人用户:在[此处](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WGHNC6MBFLZ2S)支持持续的开发和维护。另请参阅 [Funding](https://github.com/ocornut/imgui/wiki/Funding) 页面。 | [简介](#the-pitch) - [用法](#usage) - [工作原理](#how-it-works) - [版本与更新日志](#releases--changelogs) - [演示](#demo) - [入门与集成](#getting-started--integration) | :----------------------------------------------------------: | | [作品展示](#gallery) - [支持,常见问题](#support-frequently-asked-questions-faq) - [如何帮助](#how-to-help) - **[资助与赞助商](https://github.com/ocornut/imgui/wiki/Funding)** - [致谢](#credits) - [许可证](#license) | | [Wiki](https://github.com/ocornut/imgui/wiki) - [扩展](https://github.com/ocornut/imgui/wiki/Useful-Extensions) - [语言绑定与框架后端](https://github.com/ocornut/imgui/wiki/Bindings) - [使用 Dear ImGui 的软件](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui) - [用户评价](https://github.com/ocornut/imgui/wiki/Quotes) | ### 简介 Dear ImGui 是一个**无臃肿的 C++ 图形用户界面库**。它输出优化过的顶点缓冲区,您可以在启用了 3D 管线的应用程序中随时对其进行渲染。它速度快、可移植、与渲染器无关且自包含(无外部依赖)。 Dear ImGui 的设计旨在**实现快速迭代**,并**赋能程序员**创建**内容创作工具和可视化/调试工具**(而非面向普通终端用户的 UI)。为了实现这一目标,它倾向于简单和高产,因此缺乏某些更高级库中常见的功能。除其他外,不支持完整的国际化(从右到左文本、双向文本、文本整形等)和无障碍功能。 Dear ImGui 特别适合集成到游戏引擎(用于工具开发)、实时 3D 应用程序、全屏应用程序、嵌入式应用程序,或任何操作系统功能非标准的控制台平台应用程序中。 - 最小化状态同步。 - 最小化用户端的 UI 相关状态存储。 - 最小化设置和维护工作。 - 易于创建作为动态数据集镜像的动态 UI。 - 易于创建代码驱动和数据驱动的工具。 - 易于创建临时的短期工具以及长期、更复杂的工具。 - 易于修改和改进。 - 可移植,最小化依赖,可在目标平台(游戏主机、手机等)上运行。 - 高效的运行时和内存消耗。 - 经过实战检验,被[游戏行业的许多主要参与者](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui)使用。 ### 用法 **Dear ImGui 的核心包含在几个与平台无关的文件中**,您可以轻松地在您的应用程序/引擎中编译它们。即仓库根文件夹中的所有文件(`imgui*.cpp`、`imgui*.h`)。**不需要特定的构建过程**:您可以将所有文件添加到您现有的项目中。 [backends/](https://github.com/ocornut/imgui/tree/master/backends) 文件夹中提供了**适用于各种图形 API 和渲染平台的后端**,[examples/](https://github.com/ocornut/imgui/tree/master/examples) 文件夹中还提供了示例应用程序。您也可以创建自己的后端。任何可以渲染带纹理三角形的地方,都可以渲染 Dear ImGui。 希望使用 module 的 C++20 用户可以使用第三方扩展 [stripe2933/imgui-module](https://github.com/stripe2933/imgui-module)。 有关更多详细信息,请参阅本文档的 [入门与集成](#getting-started--integration) 部分。 在您的应用程序中设置好 Dear ImGui 后,您可以在程序循环的\_任何地方\_使用它: ``` ImGui::Text("Hello, world %d", 123); if (ImGui::Button("Save")) MySaveFunction(); ImGui::InputText("string", buf, IM_COUNTOF(buf)); ImGui::SliderFloat("float", &f, 0.0f, 1.0f); ```
```
// Create a window called "My First Tool", with a menu bar.
ImGui::Begin("My First Tool", &my_tool_active, ImGuiWindowFlags_MenuBar);
if (ImGui::BeginMenuBar())
{
if (ImGui::BeginMenu("File"))
{
if (ImGui::MenuItem("Open..", "Ctrl+O")) { /* Do stuff */ }
if (ImGui::MenuItem("Save", "Ctrl+S")) { /* Do stuff */ }
if (ImGui::MenuItem("Close", "Ctrl+W")) { my_tool_active = false; }
ImGui::EndMenu();
}
ImGui::EndMenuBar();
}
// Edit a color stored as 4 floats
ImGui::ColorEdit4("Color", my_color);
// Generate samples and plot them
float samples[100];
for (int n = 0; n < 100; n++)
samples[n] = sinf(n * 0.2f + ImGui::GetTime() * 1.5f);
ImGui::PlotLines("Samples", samples, 100);
// Display contents in a scrolling region
ImGui::TextColored(ImVec4(1,1,0,1), "Important Stuff");
ImGui::BeginChild("Scrolling");
for (int n = 0; n < 50; n++)
ImGui::Text("%04d: Some text", n);
ImGui::EndChild();
ImGui::End();
```

Dear ImGui 允许您**创建复杂的工具**以及非常短命的工具。在短期使用的极端情况下:利用现代编译器的 Edit&Continue(热代码重载)功能,您可以在应用程序运行时添加一些小部件来调整变量,并在一分钟后删除该代码!Dear ImGui 不仅仅用于调整数值。您可以通过仅发出文本命令来使用它跟踪正在运行的算法。您可以将它与您自己的反射数据一起使用,以实时浏览数据集。您可以用它来暴露引擎中子系统的内部结构,以创建日志记录器、检查工具、分析器、调试器,甚至是整个游戏制作编辑器/框架等。
### 工作原理
IMGUI 范式通过其 API 试图从用户的角度最大限度地减少多余的状态复制、状态同步和状态保留。它比传统的保留模式接口更不易出错(代码更少,bug 更少),并且适合创建动态用户界面。请查阅 Wiki 的 [About the IMGUI paradigm](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) 部分以了解更多详情。
Dear ImGui 输出顶点缓冲区和命令列表,您可以轻松地在应用程序中渲染它们。渲染它们所需的 draw call 和状态更改次数相当少。因为 Dear ImGui 不知道也不直接接触图形状态,您可以在代码的任何地方调用其函数(例如,在运行算法的中间,或在您自己的渲染过程中)。请参阅 examples/ 文件夹中的示例应用程序,获取有关如何将 Dear ImGui 与您现有代码库集成的说明。
_一个常见的误解是将即时模式 GUI 与即时模式渲染混为一谈,后者通常意味着在调用 GUI 函数时用一堆低效的 draw call 和状态更改来轰炸您的驱动程序/GPU。这**不是** Dear ImGui 所做的。Dear ImGui 输出顶点缓冲区和一小组 draw call 批次。它从不直接接触您的 GPU。draw call 批次相当优化,您可以稍后在您的应用程序中甚至远程渲染它们。_
### 版本与更新日志
有关带装饰的更新日志,请参阅 [Releases](https://github.com/ocornut/imgui/releases) 页面。
阅读更新日志是了解 Dear ImGui 所提供功能的好方法,也许还能给您带来一些关于您一直忽略的功能的灵感!
### 演示
调用 `ImGui::ShowDemoWindow()` 函数将创建一个展示各种功能和示例的演示窗口。该代码始终可在 `imgui_demo.cpp` 中找到以供参考。
- [Demo 的 Web 版本](https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html)(含源代码浏览器),由 [@pthom](https://github.com/pthom) 提供。
您应该能够从源代码构建示例。如果不能,请告诉我们!如果您想快速了解 Dear ImGui 的一些功能,可以在此处下载演示应用程序的 Windows 二进制文件:
- [imgui-demo-binaries-20260225.zip](https://www.dearimgui.com/binaries/imgui-demo-binaries-20260225.zip) (Windows, 1.92.6, built 2026/02/25, master) 或 [旧版二进制文件](https://www.dearimgui.com/binaries)。
### 作品展示
使用 Dear ImGui 的示例项目:[Tracy](https://github.com/wolfpld/tracy) (profiler)、[ImHex](https://github.com/WerWolv/ImHex) (十六进制编辑器/数据分析)、[RemedyBG](https://remedybg.itch.io/remedybg) (debugger) 以及[数百个其他项目](https://github.com/ocornut/imgui/wiki/Software-using-Dear-ImGui)。
有关更多用户提交的使用 Dear ImGui 的项目截图,请查看 [Gallery Threads](https://github.com/ocornut/imgui/issues?q=label%3Agallery)!
有关第三方小部件和扩展的列表,请查看 [Useful Extensions/Widgets](https://github.com/ocornut/imgui/wiki/Useful-Extensions) wiki 页面。
| | |
|--|--|
| 自定义引擎 [erhe](https://github.com/tksuoran/erhe) (docking 分支)[](https://user-images.githubusercontent.com/994606/147875067-a848991e-2ad2-4fd3-bf71-4aeb8a547bcf.png) | 用于 [Wonder Boy: The Dragon's Trap](http://www.TheDragonsTrap.com) 的自定义引擎 (2017)
[](https://cloud.githubusercontent.com/assets/8225057/20628927/33e14cac-b329-11e6-80f6-9524e93b048a.png) | | 自定义引擎 (无标题)
[](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/editor_white.png) | Tracy Profiler ([github](https://github.com/wolfpld/tracy))
[](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v176/tracy_profiler.png) | ### 入门与集成 有关详细信息,请参阅 [入门指南](https://github.com/ocornut/imgui/wiki/Getting-Started)。 在大多数平台上使用 C++ 时,**您应该能够不加修改地使用 [imgui_impl_xxxx](https://github.com/ocornut/imgui/tree/master/backends) 后端的组合**(例如 `imgui_impl_win32.cpp` + `imgui_impl_dx11.cpp`)。如果您的引擎支持多个平台,请考虑使用更多的 imgui_impl_xxxx 文件而不是重写它们:这对您来说工作量更少,并且您可以立即运行 Dear ImGui。如果您愿意,您可以_稍后_决定使用您的自定义引擎函数重写自定义后端。 将 Dear ImGui 集成到您的自定义引擎中主要涉及:1) 连接鼠标/键盘/手柄输入 2) 将纹理上传到您的 GPU/渲染引擎 3) 提供一个可以创建/更新纹理并渲染带纹理三角形的渲染函数。这正是后端所做的工作。 - [examples/](https://github.com/ocornut/imgui/tree/master/examples) 文件夹中包含了设置窗口并使用标准后端的应用程序。 - [入门指南](https://github.com/ocornut/imgui/wiki/Getting-Started) 包含了使用标准后端将 imgui 集成到现有应用程序中的说明。理论上,在链接了支持库的情况下,将 Dear ImGui 集成到您现有的代码库中应该不需要一个小时。如果您仔细阅读,时间会更短。 - [Backends](https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md) 指南解释了后端正在做什么,并提供了实现自定义后端的说明。您也可以参考我们约 20 个后端的源代码来了解它们是如何工作的。 - 通常,**请务必花时间阅读 [FAQ](https://www.dearimgui.com/faq)、注释和示例应用程序!** 官方维护的后端(位于仓库中): - 渲染器:DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL/ES/ES2, SDL_GPU, SDL_Renderer2/3, Vulkan, WebGPU。 - 平台:GLFW, SDL2/SDL3, Win32, Glut, OSX, Android。 - 框架:Allegro5, Emscripten。 [第三方后端/绑定](https://github.com/ocornut/imgui/wiki/Bindings) wiki 页面: - 语言:C, C# 以及:Beef, ChaiScript, CovScript, Crystal, D, Go, Haskell, Haxe/hxcpp, Java, JavaScript, Julia, Kotlin, Lobster, Lua, Nim, Odin, Pascal, PureBasic, Python, ReaScript, Ruby, Rust, Swift, Zig... - 框架:AGS/Adventure Game Studio, Amethyst, Blender, bsf, Cinder, Cocos2d-x, Defold, Diligent Engine, Ebiten, Flexium, GML/Game Maker Studio, GLEQ, Godot, GTK3, Irrlicht Engine, JUCE, LÖVE+LUA, Mach Engine, Magnum, Marmalade, Monogame, NanoRT, nCine, Nim Game Lib, Nintendo 3DS/Switch/WiiU (homebrew), Ogre, openFrameworks, OSG/OpenSceneGraph, Orx, Photoshop, px_render, Qt/QtDirect3D, raylib, SFML, Sokol, Unity, Unreal Engine 4/5, UWP, vtk, VulkanHpp, VulkanSceneGraph, Win32 GDI, WxWidgets。 - 许多绑定是自动生成的(由老牌的 [cimgui](https://github.com/cimgui/cimgui) 或我们较新的 [dear_bindings](https://github.com/dearimgui/dear_bindings) 生成),您可以使用它们的元数据输出为其他语言生成绑定。
[实用扩展/小部件](https://github.com/ocornut/imgui/wiki/Useful-Extensions) wiki 页面:
- 自动化/测试、文本编辑器、节点编辑器、时间轴编辑器、绘图、软件渲染器、远程网络访问、内存编辑器、gizmo 等。著名且维护良好的扩展 [ImPlot](https://github.com/epezent/implot) 和 [Dear ImGui Test Engine](https://github.com/ocornut/imgui_test_engine)。
另请参阅 [Wiki](https://github.com/ocornut/imgui/wiki) 获取更多链接和想法。
### 支持,常见问题解答 (FAQ)
请参阅:[常见问题解答 (FAQ)](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md),其中回答了常见问题。
请参阅:[入门指南](https://github.com/ocornut/imgui/wiki/Getting-Started) 和 [Wiki](https://github.com/ocornut/imgui/wiki) 获取许多链接、参考资料和文章。
请参阅:[关于 IMGUI 范式的文章](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) 以阅读/了解即时模式 GUI 范式。
请参阅:[即将到来的更改](https://github.com/ocornut/imgui/wiki/Upcoming-Changes)。
请参阅:[Dear ImGui Test Engine + Test Suite](https://github.com/ocornut/imgui_test_engine) 了解自动化与测试。
为了让搜索引擎抓取 wiki,这里有一个 [可抓取 Wiki](https://github-wiki-see.page/m/ocornut/imgui/wiki) 的链接(非人类阅读用,[原因在此](https://github-wiki-see.page/))。
刚入门?对于遇到编译/链接/运行问题或字体加载问题的首次用户,请使用 [GitHub Discussions](https://github.com/ocornut/imgui/discussions)。对于任何其他问题、bug 报告、请求、反馈,请在 [GitHub Issues](https://github.com/ocornut/imgui/issues) 上发帖。请仔细阅读并填写 New Issue 模板。
付费企业客户可获得私人支持(电子邮件:_contact @ dearimgui dot com_)。
**我应该使用哪个版本?**
我们偶尔会标记 [Releases](https://github.com/ocornut/imgui/releases)(带有详细的发布说明),但同步到最新的 `master` 或 `docking` 分支通常是安全且推荐的。该库相当稳定,并且报告的回归问题往往会被迅速修复。高级用户可能需要使用带有 [Multi-Viewport](https://github.com/ocornut/imgui/wiki/Multi-Viewports) 和 [Docking](https://github.com/ocornut/imgui/wiki/Docking) 功能的 `docking` 分支。该分支定期与 master 保持同步。
**谁在使用 Dear ImGui?**
请参阅 [Quotes](https://github.com/ocornut/imgui/wiki/Quotes)、[Funding & Sponsors](https://github.com/ocornut/imgui/wiki/Funding) 和 [Software using Dear ImGui](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui) Wiki 页面,了解谁在使用 Dear ImGui。如果可以的话,请添加您的游戏/软件!另外,请查看 [Gallery Threads](https://github.com/ocornut/imgui/issues?q=label%3Agallery)!
## 如何帮助
**我能帮什么忙?**
- 请参阅 [GitHub Forum/Issues](https://github.com/ocornut/imgui/issues)。
- 您可以帮助开发并提交 pull request!请理解,提交 PR 意味着您也在请求维护者审查您的代码,然后永远接手其维护工作。PR 的制作应既符合最终用户的利益,也有助于维护者理解和接受它。
- 在 [Wiki](https://github.com/ocornut/imgui/wiki/) 上查看 [Help wanted](https://github.com/ocornut/imgui/wiki/Help-Wanted) 以获取更多想法。
- 成为一名[资助支持者](https://github.com/ocornut/imgui/wiki/Funding)!让您的公司通过开具发票的赞助/维护或购买 [Dear ImGui Test Engine](https://github.com/ocornut/imgui_test_engine) 的许可证来为该项目提供资金支持(请联系:contact AT dearimgui DOT com)。
## 许可证
Dear ImGui 根据 MIT 许可证授权,有关更多信息,请参阅 [LICENSE.txt](https://github.com/ocornut/imgui/blob/master/LICENSE.txt)。标签:C++, Dear ImGui, Direct3D, DirectX, GUI, LangChain, Metal, Mutation, OpenGL, UI框架, Vulkan, 即时模式, 可视化, 图形用户界面, 嵌入式GUI, 工具开发, 开源库, 搜索引擎爬虫, 数据擦除, 无依赖, 渲染, 游戏开发, 游戏引擎, 轻量级