imgui 学习 之一
ImGUI又称为Dear ImGui,它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用,也可以编译成dll, ImGUI使用DX或者OpenGL进行界面渲染,对于画面质量要求较高,例如客户端游戏,4k/8k视频播放时,用ImGUI是很好的选择,当然,你得非常熟悉DirectX或者OpenGL,不然就是宝剑在手,屠龙无力。相对于Qt、MFC、DuiLib、SOUI等,ImGUI的拓展性更好,也更轻量级,当然对于开发者的要求也更高.
imgui 基本控件:
label、text、checkbox、slider
窗体控件:树形控件、图片控件、ComboBox、列表控件、菜单栏等
IMGUI的使用步骤如下:
1. 准备相关库和环境:通常使用的库是Dear ImGui,它支持多种编程语言和图形API。
2. 初始化GUI:在游戏或应用程序的初始化阶段,需要创建一个GUI上下文,并配置相关参数,如字体、样式等。
3. 绘制GUI元素:在每一帧更新时,需要调用绘制函数来绘制GUI元素,通常是在游戏的渲染循环中完成。绘制函数会根据用户的输入状态来更新GUI的显示情况。
4. 处理GUI事件:在绘制函数中,需要通过判断用户的输入状态来处理GUI事件,如按钮点击、拖拽等操作。根据事件的类型和位置,执行相应的逻辑操作。
5. 清理资源:在程序结束时,需要释放GUI相关的资源,如删除GUI上下文、销毁绘制函数、释放纹理内存等。
下面是一个简单的使用Dear ImGui库的C++示例代码:
#include <imgui.h> #include <imgui_impl_opengl3.h> #include <imgui_impl_glfw.h> int main() { // 初始化GLFW窗口和OpenGL上下文 // 初始化Dear ImGui ImGui::CreateContext(); ImGuiIO& io = ImGui::GetIO(); ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init("#version 330 core"); ImGui::StyleColorsDark(); while (!glfwWindowShouldClose(window)) { // 处理输入事件 glfwPollEvents(); // 开始新的一帧 ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); // 绘制GUI元素 ImGui::Begin("Hello, World!"); ImGui::Text("This is a simple GUI!"); if (ImGui::Button("Click Me")) { // 当按钮被点击时执行操作 // ... } ImGui::End(); // 渲染GUI ImGui::Render(); int display_w, display_h; glfwGetFramebufferSize(window, &display_w, &display_h); glViewport(0, 0, display_w, display_h); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); // 交换缓冲区 glfwSwapBuffers(window); } // 清理资源 ImGui_ImplOpenGL3_Shutdown(); ImGui_ImplGlfw_Shutdown(); ImGui::DestroyContext(); // 关闭窗口和释放相关资源 return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)