ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

用 Dear ImGui 做调试面板:3分钟跑出一个可拖拽窗口

用 Dear ImGui 做调试面板:3分钟跑出一个可拖拽窗口 用 Dear ImGui 做调试面板3分钟跑出一个可拖拽窗口【免费下载链接】imguiDear ImGui: Bloat-free Graphical User interface for C with minimal dependencies项目地址: https://gitcode.com/GitHub_Trending/im/imgui做游戏或工具的人几乎都有同一个需求一个随时能拖出来调参数、看数据的调试面板。Dear ImGui 是一个轻量的 C 即时模式 GUI 库读完这篇你就能亲手跑通第一个窗口并把滑块换成自己的真实数据。调试面板是工具开发者最常见的痛点游戏开发时要临时改角色速度、工具里要实时刷新日志传统保留模式GUI 你得先声明布局、再管理每个控件的生命周期和状态代码写起来很啰嗦。而 ImGui 的思路是即时模式每帧把界面描述一遍画完就丢不用记按钮放在哪。写调试界面这种用完即走的场景它天然合适。为什么选 Dear ImGui 而不是 Qt简单对比一下Qt功能强但依赖重、学习曲线陡塞进游戏引擎里很别扭Dear ImGui几个 C 源文件就是全部零第三方依赖只要有图形 APIOpenGL、Vulkan、DirectX 都行就能用它不是给产品界面用的定位就是给开发者用的开发工具界面——这恰好是它做得最顺手的部分。3分钟跑通一个示例窗口一条命令拿到源码装好 GLFW然后编译官方示例跑起来你会看到一个带滑块、按钮、可拖拽的窗口git clone https://gitcode.com/GitHub_Trending/im/imgui imgui apt-get install libglfw-dev cd imgui/examples/example_glfw_opengl3 make ./example_glfw_opengl3示例工程背后就是 5 个核心 cppimgui、imgui_draw、imgui_widgets、imgui_tables、imgui_demo加两个后端文件后端全部在 backends/ 目录里按你用的窗口库和图形 API 挑就行。把它改成你自己的调试面板初始化只要几行之后每帧记住三步开帧 → 描述界面 → 渲染。下面的片段就是最小可跑的主循环ImGui::CreateContext(); ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init(); while (!glfwWindowShouldClose(window)) { ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); ImGui::Begin(调试面板); ImGui::SliderFloat(速度, speed, 0.0f, 10.0f); ImGui::End(); ImGui::Render(); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); glfwSwapBuffers(window); }把speed换成你游戏里的真实变量调试面板就是你的了。跑不起来时查这份清单链接报错、找不到符号→ 核心 cpp 没全部进编译列表 → 把 5 个核心文件和 2 个后端文件都加上窗口黑屏→ 图形 API 版本不匹配 → 检查窗口创建的 OpenGL 版本和传给ImGui_ImplOpenGL3_Init的版本串是否一致中文显示成方块→ 默认字体不含中文字形 → 加载一份含中文的 TTF 加进字体图集按钮点了没反应→ 鼠标坐标没喂进去 → 每帧把鼠标位置和滚动值写进io更多细节可以直接翻 docs/FAQ.md。还能往哪走想把窗口拖出去拼成一屏切 docking 分支想画曲线和柱状图配 ImPlot一行代码出图表格、多视口、剪贴板都在示例和文档里从 examples/ 开始看即可下一步别只玩示例把滑块绑上你项目里的真实参数你的第一个调试面板就上线了。【免费下载链接】imguiDear ImGui: Bloat-free Graphical User interface for C with minimal dependencies项目地址: https://gitcode.com/GitHub_Trending/im/imgui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表