轻量级 C++ 库 Dear ImGui:特性丰富、使用便捷,邀你支持与参与开发!
引言有句话说得好“给某人一个状态某天他们就会遇到一个 bug但要是教会他们如何在两个必须保持同步的独立位置表示状态那他们这辈子都有 bug 可遇了” ——ryg这个库采用免费且宽松的许可协议但需要资金支持以持续改进。除了维护和稳定性还有许多实用特性等待添加。如果贵公司正在使用 Dear ImGui请考虑提供支持。企业可通过开具发票的赞助/支持合同来支持其持续开发和维护邮箱contact dearimgui dot com个人可在此支持其持续开发和维护也可查看资助页面。介绍概述Dear ImGui 是一个轻量级的 C 图形用户界面库。它能输出优化后的顶点缓冲区可在支持 3D 渲染管线的应用程序中随时渲染。该库具有快速、可移植、渲染器无关且自包含无外部依赖的特点。设计目标旨在实现快速迭代助力程序员创建内容创作工具以及可视化/调试工具而非面向普通终端用户的 UI。为达成此目标它注重简单性和生产力因此缺少一些高级库常见的功能例如不支持全面的国际化如从右到左的文本、双向文本、文本塑形等和无障碍功能。适用场景特别适合集成到游戏引擎用于开发工具、实时 3D 应用程序、全屏应用程序、嵌入式应用程序或任何操作系统功能非标准的控制台平台应用程序。优势特点减少状态同步降低用户端与 UI 相关的状态存储。简化设置和维护工作。易于创建动态 UI能反映动态数据集。便于创建代码驱动和数据驱动的工具。可轻松创建临时工具和长期使用的复杂工具。易于修改和改进。具有可移植性依赖少能在目标设备如控制台、手机等上运行。运行时和内存消耗高效。经过实战检验被游戏行业众多主要参与者使用。使用方法核心文件Dear ImGui 的核心包含在几个与平台无关的文件中可轻松编译到应用程序/引擎里。这些文件位于仓库的根文件夹imgui*.cpp, imgui*.h无需特定的构建过程可直接添加到现有项目。后端支持backends/ 文件夹提供了多种图形 API 和渲染平台的后端examples/ 文件夹中有示例应用程序也可自行创建后端。只要能渲染带纹理的三角形就能渲染 Dear ImGui。C20 用户若想使用模块可使用 stripe2933/imgui - module 第三方扩展。代码示例在应用程序中设置好 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);// 创建一个带菜单栏的窗口ImGui::Begin(My First Tool, my_tool_active, ImGuiWindowFlags_MenuBar);if (ImGui::BeginMenuBar()) { if (ImGui::BeginMenu(File)) { if (ImGui::MenuItem(Open.., CtrlO)) { /* 执行操作 */ } if (ImGui::MenuItem(Save, CtrlS)) { /* 执行操作 */ } if (ImGui::MenuItem(Close, CtrlW)) { my_tool_active false; } ImGui::EndMenu(); } ImGui::EndMenuBar();}// 编辑存储为 4 个浮点数的颜色ImGui::ColorEdit4(Color, my_color);// 生成样本并绘制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);// 在滚动区域显示内容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 既能创建复杂工具也能创建临时工具。借助现代编译器的 EditContinue热代码重载功能可在应用程序运行时添加一些小部件来调整变量一分钟后再移除代码。它不仅可用于调整值还能通过输出文本命令跟踪运行中的算法结合自身反射数据实时浏览数据集暴露引擎子系统的内部信息创建日志记录器、检查工具、性能分析器、调试器甚至整个游戏制作编辑器/框架等。工作原理IMGUI 范式通过其 API 尽量减少多余的状态复制、状态同步和用户端的状态保留。与传统的保留模式界面相比它出错的可能性更小代码更少bug 也更少适合创建动态用户界面。更多详情可查看 Wiki 的 “About the IMGUI paradigm” 部分。渲染机制Dear ImGui 输出顶点缓冲区和命令列表可在应用程序中轻松渲染渲染所需的绘制调用和状态更改数量较少。由于它不直接了解或操作图形状态可在代码的任何位置调用其函数如在运行中的算法中间或自己的渲染过程中间。可参考 examples/ 文件夹中的示例应用程序了解如何将 Dear ImGui 集成到现有代码库。需要注意的是不要将即时模式 GUI 误解为即时模式渲染后者通常意味着在调用 GUI 函数时会向驱动程序/GPU 发送大量低效的绘制调用和状态更改而 Dear ImGui 输出顶点缓冲区和少量绘制调用批次从不直接操作 GPU绘制调用批次经过优化可在应用程序中稍后渲染甚至远程渲染。版本发布与更新日志可查看发布页面获取详细的更新日志。阅读更新日志有助于及时了解 Dear ImGui 的新特性说不定还能让你发现之前忽略的功能。演示调用 ImGui::ShowDemoWindow() 函数会创建一个演示窗口展示各种功能和示例代码可在 imgui_demo.cpp 中查看。imgui_explorer 是带有源代码浏览器的 Web 版演示由 pthom 提供。应能从源代码构建示例如果遇到问题请告知。若想快速了解 Dear ImGui 的一些功能可在此下载 Windows 版演示应用程序的二进制文件imgui - demo - binaries - 20260225.zipWindows1.92.62026/02/25 构建master 分支或旧版本二进制文件。示例展示使用 Dear ImGui 的示例项目有 Tracy性能分析器、ImHex十六进制编辑器/数据分析工具、RemedyBG调试器等数百个项目。更多用户提交的使用 Dear ImGui 的项目截图可查看示例展示线程。第三方小部件和扩展列表可查看 “有用扩展/小部件” Wiki 页面。快速上手与集成详细信息可查看快速上手指南。在大多数平台上使用 C 时可直接使用 imgui_impl_xxxx 后端如 imgui_impl_win32.cpp imgui_impl_dx11.cpp。如果引擎支持多平台可考虑使用更多 imgui_impl_xxxx 文件而非重写这样工作量更小能让 Dear ImGui 立即运行。之后若有需要可使用自定义引擎函数重写自定义后端。将 Dear ImGui 集成到自定义引擎主要需完成以下几点连接鼠标/键盘/游戏手柄输入。将纹理上传到 GPU/渲染引擎。提供一个能创建/更新纹理并渲染带纹理三角形的渲染函数这正是后端所做的工作。examples/ 文件夹中有设置窗口并使用标准后端的应用程序示例快速上手指南中有使用标准后端将 imgui 集成到现有应用程序的说明。理论上在已链接支持库的现有代码库中集成 Dear ImGui 耗时不到一小时仔细阅读指南的话时间会更短。后端指南解释了后端的工作原理并提供了实现自定义后端的说明也可参考约 20 个后端的源代码了解其工作方式。总之要花时间阅读常见问题解答、注释和示例应用程序。官方维护的后端渲染器DirectX9、DirectX10、DirectX11、DirectX12、Metal 3/4、OpenGL/ES/ES2、SDL_GPU、SDL_Renderer2/3、Vulkan、WebGPU。平台GLFW、SDL2/SDL3、Win32、Glut、OSX、Android。框架Allegro5、Emscripten。第三方后端/绑定支持的语言包括 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ÖVELUA、Mach Engine、Magnum、Marmalade、Monogame、NanoRT、nCine、Nim Game Lib、Nintendo 3DS/Switch/WiiU自制系统、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 或新的 dear_bindings可使用其元数据输出为其他语言生成绑定。有用的扩展/小部件包括自动化/测试、文本编辑器、节点编辑器、时间线编辑器、绘图、软件渲染器、远程网络访问、内存编辑器、小工具等。值得注意且支持良好的扩展有 ImPlot、ImPlot3d 和 Dear ImGui Test Engine更多链接和想法可查看 Wiki。支持与常见问题解答常见问题解答可查看 “Frequently Asked Questions (FAQ)”。快速上手和 Wiki 页面有许多链接、参考资料和文章。可阅读 “Articles about the IMGUI paradigm” 了解即时模式 GUI 范式。查看 “Upcoming Changes” 了解即将到来的更改。可使用 “Dear ImGui Test Engine Test Suite” 进行自动化和测试。为方便搜索引擎抓取 Wiki这里提供可抓取的 Wiki 链接不适合人类阅读原因在此说明。新手入门首次使用遇到编译/链接/运行问题或加载字体问题可使用 GitHub 讨论区。其他问题、错误报告、请求、反馈等请在 GitHub Issues 上发布请仔细阅读并填写新问题模板。付费企业客户可享受私人支持邮箱contact dearimgui dot com。版本选择偶尔会标记版本发布带有详细的发布说明但通常建议同步到最新的 master 分支或 docking 分支该库相当稳定报告的回归问题通常能快速修复。高级用户可使用支持多视图端口和停靠功能的 docking 分支该分支会定期与 master 分支保持同步。使用者情况可查看 “Quotes”、“Funding Sponsors” 和 “Software using Dear ImGui” Wiki 页面了解使用 Dear ImGui 的情况若你的游戏/软件也在使用请添加相关信息也可查看示例展示线程。如何提供帮助参与开发可在 GitHub 论坛/问题区提供帮助并提交拉取请求。需注意提交 PR 意味着请求维护者审查代码并永久接管维护工作PR 应既考虑最终用户的利益又便于维护者理解和接受。更多想法可查看 Wiki 上的 “Help wanted”。提供资金支持可让公司通过开具发票的赞助/维护方式或购买 Dear ImGui Test Engine 的许可证来支持该项目邮箱contact AT dearimgui DOT com。赞助情况Dear ImGui 的持续开发一直得到用户和私人赞助商的资金支持具体的当前和过去的资助者及赞助商名单可查看详细列表。2014 年 11 月至 2019 年 12 月其持续开发也得到了 Patreon 用户和个人捐赠的资金支持。感谢所有过去和现在的支持者是你们让这个项目得以持续发展Dear ImGui 使用了为开源项目免费提供的软件和服务如用于静态分析的 PVS - Studio支持 C/C/C#/Java、用于持续集成系统的 GitHub actions、用于代码覆盖率分析的 OpenCppCoverage。开发人员与贡献者由 Omar Cornut 开发GitHub 上的所有直接或间接贡献者也功不可没。该库的早期版本在 Media Molecule 的支持下开发最初在游戏 TearawayPS Vita中内部使用。长期贡献者包括 Rokas Kupstys rokups2020 - 2022他为 Dear ImGui Test Engine 中的自动化系统和回归测试做了大量工作。维护/支持合同、赞助发票和其他 B2B 交易由 Disco Hello 托管和处理。灵感来源与致谢Omar 表示“我最初在 Q - Games 接触到 IMGUI 范式当时 Atman Binstock 在代码库中实现了一个简单版本我花了很多时间改进和思考。后来发现 Atman 是通过与 Casey 合作直接接触到这个概念的。我到 Media Molecule 后重写了一个新库试图克服之前使用的库的缺陷和限制就有了现在这个库此后我一直在不断迭代和改进它。” 该库嵌入了 Tristan Grimmer 的 ProggyClean 字体MIT 许可、Disco Hello 和 Tristan Grimmer 的 ProggyForever 字体MIT 许可以及 Sean Barrett 的 stb_textedit.h、stb_truetype.h、stb_rect_pack.h公共领域。早期版本的灵感、反馈和测试来自 Casey Muratori、Atman Binstock、Mikko Mononen、Emmanuel Briney、Stefan Kamoda、Anton Mikhailov、Matt Willis。特别感谢 Alex Evans、Patrick Doane、Marco Koegler 的热心帮助也感谢在 GitHub 上提供反馈、提问和补丁的所有人。许可协议Dear ImGui 采用 MIT 许可协议更多信息可查看 LICENSE.txt。

相关新闻

AI驱动论文写作:从文献调研到审稿回复的全流程工程化实践

AI驱动论文写作:从文献调研到审稿回复的全流程工程化实践

作为一名中科院的研究生,你是否也曾经历过这样的深夜:面对一个闪光的idea,却不知如何将其转化为一篇结构严谨、逻辑清晰、格式规范的学术论文?从文献综述的浩如烟海,到实验设计的反复推敲,再到英文写作的遣…

2026/7/28 11:46:19阅读更多 →
《创世战车》Darling战车进阶指南:从狙击手到战术核心

《创世战车》Darling战车进阶指南:从狙击手到战术核心

如果你在《创世战车》里遇到过那种开局就冲、见人就打、三分钟送完人头的队友,那你一定知道我在说什么。但更让人头疼的,是那些选了“Darling”这个看似简单、实则极其考验战场意识的战车,却完全不知道自己在干嘛的玩家。他们要么躲在后面一枪…

2026/7/28 11:46:19阅读更多 →
Codex Skills:从对话AI到自动化工作流引擎的进阶指南

Codex Skills:从对话AI到自动化工作流引擎的进阶指南

你花了一下午,终于把 Codex 装好了。看着命令行里那个闪烁的光标,你满怀期待地输入了第一个指令:“帮我分析一下这个项目的代码结构。” 然后,你得到了一个礼貌但略显空洞的回应,它似乎理解了你的问题,但给…

2026/7/28 11:46:19阅读更多 →
揭秘AI编程智能体架构:从代码生成到80%自主提交的工程实践

揭秘AI编程智能体架构:从代码生成到80%自主提交的工程实践

在实际软件开发项目中,代码提交与评审是决定交付质量和团队协作效率的核心环节。传统模式下,开发者需要手动编写代码、运行测试、提交变更、撰写提交信息,并等待同行评审,整个过程耗时且容易因人为疏忽引入错误。随着AI编程助手能力的演进,一种新的可能性正在浮现:让AI智…

2026/7/28 12:58:33阅读更多 →
AI在电商领域的三大核心应用与实战策略

AI在电商领域的三大核心应用与实战策略

1. 电商行业的AI革命:从工具到生态的蜕变过去三年,我亲眼见证了AI技术如何从电商平台的辅助工具逐渐演变为整个行业的基础设施。记得2021年第一次接触AI选品系统时,它只能提供简单的关键词匹配建议;而今天,我工作室的A…

2026/7/28 12:58:33阅读更多 →
英雄联盟智能辅助工具:League Akari 如何让游戏决策变得简单快速?

英雄联盟智能辅助工具:League Akari 如何让游戏决策变得简单快速?

英雄联盟智能辅助工具:League Akari 如何让游戏决策变得简单快速? 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是…

2026/7/28 12:58:33阅读更多 →
Java HashMap核心原理与性能优化实战

Java HashMap核心原理与性能优化实战

1. HashMap核心实现机制解析 当我们需要在Java中存储键值对数据时,HashMap无疑是最常用的选择之一。这个看似简单的数据结构背后,其实隐藏着精妙的设计哲学。让我们先来看看JDK8中HashMap的基础结构: // HashMap的核心字段 transient Node&…

2026/7/28 12:58:33阅读更多 →
python 超市商品推荐系统

python 超市商品推荐系统

一、关键词超市商品推荐系统、超市商品推荐、超市商品推荐信息管理、超市商品推荐后台管理二、作品包含源码数据库设计文档全套环境和工具资源本地部署教程三、项目技术前端技术: Html、Css、Js、Vue3.2、Element-Plus后端技术:Python、Django四、运行环…

2026/7/28 12:58:33阅读更多 →
C++ std::list 双向链表:核心特性、性能对比与实战应用

C++ std::list 双向链表:核心特性、性能对比与实战应用

1. 项目概述:为什么你需要深入了解 std::list ? 在C的日常开发中,尤其是面对算法竞赛、高频交易系统后台或是游戏服务器的数据管理时,我们常常会听到这样的讨论:“这里用 vector 还是 list ?” 新手可…

2026/7/28 12:56:33阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →