当前位置: 首页 > news >正文

Dear ImGui 入门教程:零基础开发者如何 30 分钟画出第一个窗口

Dear ImGui 入门教程:零基础开发者如何 30 分钟画出第一个窗口

【免费下载链接】imguiDear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies项目地址: https://gitcode.com/GitHub_Trending/im/imgui

Dear ImGui 是一款几乎零依赖的轻量级 C++ GUI 库,让你直接在程序里画出窗口、按钮和调试面板。这篇教程写给从未碰过 GUI 库的你,跟下来就能看到第一个窗口跑起来。

它到底是个什么东西

它就像画在游戏或工具窗口上的一张"临时画布"——每帧告诉它界面长什么样,画完即走,不留任何状态。这种写法叫"即时模式"(Immediate Mode),和 Web 开发里维护组件树的方式正好相反。

它最突出的优势是塞得进传统 GUI 框架塞不进的地方:

  • 零依赖,几个文件就能跑
  • 单线程帧循环,无消息循环
  • 能嵌进游戏引擎和编辑器

官方仓库自带一个演示窗口,一次展示上百个控件,是你最快的"控件样书"。

动手前,先把环境对一遍

先别急着敲代码,花两分钟把环境对一下。

工具用途备注
C++ 编译器编译核心与后端代码GCC / Clang / MSVC,支持 C++11 即可
Git拉取项目源码近两三年的版本都行
GLFW创建窗口、提供图形上下文examples/libs/glfw/里有预编译库
构建工具组织编译与链接Make / Visual Studio / CMake 任选

用下面命令拉取源码:

git clone https://gitcode.com/GitHub_Trending/im/imgui

这条命令会把 Dear ImGui 最新源码下载到当前目录的imgui文件夹里,后面用到的文件全在里面。

📁 目录结构,30 秒扫一遍

项目不大,先看根目录这几行就够:

imgui/ ├── imgui.h # 主头文件,核心入口,API 全在这 ├── imgui.cpp # 核心实现:窗口、输入、布局逻辑 ├── imgui_draw.cpp # 渲染逻辑:文字与图形的顶点生成 ├── imgui_widgets.cpp # 按钮、输入框等常用控件实现 ├── backends/ # 平台与渲染后端,选一套组合 ├── examples/ # 各平台可直接运行的完整示例 └── misc/ # FreeType 字体、C++ 附加件,先忽略

imgui.h是核心入口,先记住它。examples/里每个平台都有能直接编译的示例,拿不准时照着抄就行。

🚀 三步跑通 Dear ImGui

这是全文重点,三步把 Dear ImGui 从源码变成屏幕上的窗口。

第一步:引入核心文件

从根目录把这 4 个文件拷进你的项目:

  • imgui.h——主头文件,后面要调用的接口都从这里进
  • imgui.cpp——核心实现,管窗口生命周期和输入分发
  • imgui_draw.cpp——渲染逻辑,把文字和形状翻译成图形命令
  • imgui_widgets.cpp——按钮、输入框、复选框等常用控件的实现

第二步:选对你的图形后端

后端(Backend)是帮 ImGui 接上具体窗口系统和图形 API 的适配层。按你的环境挑一套:

  • backends/imgui_impl_glfw.cpp+backends/imgui_impl_opengl3.cpp——GLFW 窗口加 OpenGL3,最通用,本文就用它
  • backends/imgui_impl_sdl3.cpp+backends/imgui_impl_opengl3.cpp——项目里已经用 SDL 时选这套
  • backends/imgui_impl_win32.cpp+backends/imgui_impl_dx11.cpp——Windows 原生窗口加 DirectX 的组合

第三步:粘贴最小可运行代码

先建好 GLFW 窗口和 OpenGL 上下文,这部分可以直接抄 examples/example_glfw_opengl3/main.cpp 的前半段。然后贴入初始化代码:

ImGui::CreateContext(); // 创建全局上下文,只做一次 ImGui_ImplGlfw_InitForOpenGL(window, true); // 让 GLFW 把输入事件喂给 ImGui ImGui_ImplOpenGL3_Init("#version 130"); // 让渲染后端构建字体纹理

接着在主循环里按顺序调用:

while (!glfwWindowShouldClose(window)) { ImGui_ImplOpenGL3_NewFrame(); // 准备本帧的渲染 ImGui_ImplGlfw_NewFrame(); // 同步鼠标键盘输入 ImGui::NewFrame(); // 正式开帧 ImGui::Begin("Hello World"); // 开一个窗口 ImGui::Text("Dear ImGui 跑起来了!"); // 画一行文字 ImGui::End(); // 关闭窗口 ImGui::Render(); // 收集本帧的绘制命令 ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); // 交给 OpenGL glfwSwapBuffers(window); // 交换缓冲区,上屏 }

编译运行,你会看到一个可拖动的窗口和一行字。到这里,完整的 Dear ImGui 集成步骤就走完了。

🐛 跑不起来?高频坑一览

一报错先别慌,八成逃不出下面这张表。

症状原因解决
编译报 "imgui.h" not found没把backends/加进包含路径工程里补上后端目录的头文件路径
链接报未定义 ImGui_ImplGlfw_InitForOpenGL后端源文件没加进工程把对应后端的.cpp拷进来一起编译
窗口能开但屏幕一片空白少了清屏或渲染调用顺序不对对照示例主循环,四行调用逐一核对
中文显示成方块字体图集默认不含中文字形按 docs/FONTS.md 加载含中文的字库
控件一多帧率就掉每帧绘制调用太多合并文字、减少控件,参考 demo 的写法

多数问题本质是"漏拷一个文件"或"调用顺序错了"。拿示例逐行对一遍,基本都能定位。

跑通之后,往哪走

想继续深挖这份 Dear ImGui 使用教程,按这 5 个方向来:

  1. 把 imgui_demo.cpp 读一遍——它本身就是一本可运行的控件手册,示例启动后自动弹出
  2. 学改主题和配色——imgui.h 里的样式 API,一行StyleColorsDark()切深色
  3. 正式支持中文——docs/FONTS.md 讲清楚字体加载和字形范围怎么配
  4. 搞懂后端机制——docs/BACKENDS.md 覆盖后端选型和自定义后端的完整写法
  5. 跑其他平台的示例——docs/EXAMPLES.md 给出每个平台的逐步构建说明

你已经迈出第一步:让第一帧画面上了屏。剩下的,只是在上面继续加东西。

【免费下载链接】imguiDear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies项目地址: https://gitcode.com/GitHub_Trending/im/imgui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4286055.html

相关文章:

  • ADC转换点测试:从原理到实践,精准评估模数转换器性能
  • LSTM+高斯过程回归+贝叶斯优化:新能源汽车销量预测混合框架
  • Fira Code 连字字体安装教程:3 步装好并启用连字
  • DeepSeek API接入实战:从推理模型reasoning_content到http 400排错
  • C++模板编程深度解析:从泛型基础到STL实现原理
  • 智能体服务流量增长前要补哪些防线
  • 视频大模型越强,AI工具流如何成为生产基础设施?
  • Fira Code:免费编程连字等宽字体,3步装好就能用
  • 为什么claude-obsidian是Obsidian时代终极AI笔记工具?
  • 5分钟给AI编码助手装上24项工程技能:agent-skills快速上手指南
  • AI投标书助手防幻觉:五层工程防线让大模型只讲真话
  • AI Agent开发实战:从大模型原理到ES日志分析智能体
  • AI 编程中的隐私与安全:哪些信息不要提交
  • 蓝桥杯国赛算法实战:从模拟、贪心到BFS与动态规划
  • DeepSeek API涨价30倍仍便宜?接入配置与reasoning_content报错排查
  • AI辅助自动化测试实战:用Python+Playwright+7小时从入门到落地
  • Hermes Agent 的 AI 代理日志监控完整指南:用 ELK Stack 从 0 到告警的 4 个阶段
  • PaddleOCR 5 分钟上手:把任意 PDF 或图片变成 LLM 可用的结构化数据
  • Java网络编程实战:从Socket、TCP/UDP到高并发优化
  • 百度C++研发面试深度复盘:从语言特性到系统设计的全方位备战指南
  • 惊喜来袭!AI专著生成工具登场,助你快速完成20万字专著写作!
  • OpenCode:3分钟上手终端里的开源AI编程助手
  • 从单智能体到生产级系统:18 课开源 AI Agent 课程工程化路径
  • 从Gilroy事件看AI数据中心选址与能耗挑战:技术、社区与合规博弈
  • GitNexus MCP资源(gitnexus://)怎么用:Agent必读的10个URI清单
  • 京东2016研发工程师编程题:核心题型与笔试实战策略
  • C++学习笔记(一)
  • 拓扑排序与动态规划:从DAG路径计数到算法竞赛实战
  • PayloadsAllTheThings:54类Web漏洞的payload与绕过手法,一个仓库全收
  • 响应式接口传递业务意图