C++如何使用ImGui创建简单的GUI界面?(代码示例)

用 ImGui 创建 C++ GUI 的关键是将渲染循环与 ImGui 初始化、帧开始/结束调用正确串联;需配合 GLFW 等平台层和 OpenGL/Vulkan 渲染后端,示例以 GLFW + OpenGL 3.3 展示了完整流程:环境准备、ImGui 初始化、每帧嵌入(NewFrame → 构建 UI → Render)、资源清理。

c++如何使用imgui创建简单的gui界面?(代码示例)

用 ImGui 创建 C++ GUI 界面不难,关键是把渲染循环和 ImGui 的初始化、帧开始/结束调用串起来。它本身不负责窗口管理或 OpenGL/Vulkan 初始化,需要搭配 GLFW、SDL2 或 Win32 等平台层使用。下面以 GLFW + OpenGL 3.3 为例,给出最小可运行的完整流程和代码。

1. 环境准备与依赖集成

你需要:

ImGui 源码(imgui.cpp、imgui.h、imgui_demo.cpp 等) GLFW(用于创建窗口和处理输入) OpenGL 3.3+ 上下文(GLFW 可自动创建) 一个 OpenGL 加载器(如 glad,比 glew 更推荐)

把 imgui/ 目录整个复制进项目,链接 glfw 和 opengl32(Windows)或 -lglfw -ldl -lX11(Linux)。

2. 初始化 ImGui(一次)

在创建好 OpenGL 上下文后,调用:

立即学习“C++免费学习笔记(深入)”;

// 初始化 GLFW 和 OpenGL 上下文后IMGUI_CHECKVERSION();ImGui::CreateContext();ImGuiIO& io = ImGui::GetIO(); (void)io;io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // 启用键盘导航(可选)// 设置字体(可选,默认有内置字体)// io.Fonts->AddFontFromFileTTF("arial.ttf", 16.0f);// 绑定渲染后端(这里用 OpenGL 3)ImGui_ImplGlfw_InitForOpenGL(window, true);ImGui_ImplOpenGL3_Init("#version 330");

3. 渲染循环中嵌入 ImGui

每帧做三件事:开始帧 → 构建 UI → 渲染并交换缓冲区:

while (!glfwWindowShouldClose(window)){    // 1. 每帧开始    glfwPollEvents();    ImGui_ImplOpenGL3_NewFrame();    ImGui_ImplGlfw_NewFrame();    ImGui::NewFrame();    // 2. 构建你的界面(示例:一个带按钮的窗口)    ImGui::Begin("Hello World");    ImGui::Text("This is a simple GUI.");    if (ImGui::Button("Click me!"))    {        printf("Button clicked!n");    }    ImGui::End();    // 3. 渲染 ImGui 并显示    glClearColor(0.45f, 0.55f, 0.60f, 1.00f);    glClear(GL_COLOR_BUFFER_BIT);    ImGui::Render();    ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());    glfwSwapBuffers(window);}

4. 清理资源

退出前别忘了释放:

ImGui_ImplOpenGL3_Shutdown();ImGui_ImplGlfw_Shutdown();ImGui::DestroyContext();glfwDestroyWindow(window);glfwTerminate();

基本上就这些。你不需要写 XML、不涉及 Qt/MFC 那类重量级框架,所有 UI 都是 C++ 代码即时生成的。想加滑块、输入框、下拉菜单?直接查 ImGui::SliderFloat()、ImGui::InputText()、ImGui::Combo() 就行。Demo 窗口(ImGui::ShowDemoWindow())自带全部控件示例,开发时建议打开看看。

以上就是C++如何使用ImGui创建简单的GUI界面?(代码示例)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1489133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 12:09:01
下一篇 2025年12月19日 12:09:18

相关推荐

发表回复

登录后才能评论
关注微信