opengl下imgui使用教程

文章目录

开发环境:ubuntu18.04、opengl3

imgui介绍

ImGUI又称为Dear ImGui,它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用。

imgui使用

  • 下载imgui https://github.com/ocornut/imgui
  • 将如下文件添加到项目中
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y0X5Hsx5-1661430891288)(/home/celia/Pictures/imgui.png)]
  • 宏定义及include头文件
#include "imgui/imgui.h"
#include "imgui/imgui_impl_glfw.h"
#include "imgui/imgui_impl_opengl3.h"

注:不同的开发环境需要引用不同的头文件

  • code
  //创建并绑定ImGui
  IMGUI_CHECKVERSION();
  ImGui::CreateContext();
  ImGui::StyleColorsDark();
  ImGuiIO &io = ImGui::GetIO();
  (void)io;
  ImGui_ImplGlfw_InitForOpenGL(window, true);//GLFWwindow
  ImGui_ImplOpenGL3_Init("#version 330");//自己的版本
  
  bool show_demo_window = false;//是否显示样例
  bool p_open = true;
  //渲染循环  
  while (!glfwWindowShouldClose(window)) {
    ImGui_ImplOpenGL3_NewFrame();
    ImGui_ImplGlfw_NewFrame();
    ImGui::NewFrame();
    
	 if (show_demo_window)
	   ImGui::ShowDemoWindow(&show_demo_window);

//创建一个面板
    {
      ImGui::Begin("Panel", &p_open, ImGuiWindowFlags_MenuBar);
      ImGui::ColorEdit3("object color", (float *)&objectColor);//颜色编辑条
      ImGui::ColorEdit3("lightColor", (float *)&lightColor);//lightColor类型为ImVec4,后续将被赋值给着色器中的变量
      ImGui::End();
    }
    ...
    //准备绘制
     ImGui::Render();
    ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
    ...
 }   
 
 // 释放ImGui资源
  ImGui_ImplOpenGL3_Shutdown();
  ImGui_ImplGlfw_Shutdown();
  ImGui::DestroyContext();

以上即为一个简单的demo,详细开发参照官方文档

打开下面链接,直接免费下载资源: https://renmaiwang.cn/s/eu2ym 《精简封装与深度解析imgui1.78库》:该库正式名称为“Immediate Mode Graphical User Interface”,由Omar Cornut发起维护,被广泛应用于游戏开发、调试工具及数据可视化等领域。其凭借简洁的API和高效的流程深得开发者青睐。本文将深入探讨imgui1.78的精简封装及其在项目中的有效整合。 图形用户界面(GUI)是软件与用户交互的主要方式,提供直观的视觉元素如按钮、滑块等。该库采用“立即模式”理念,在渲染时直接计算和更新UI状态,避免帧间存储,使代码更加简洁,并在处理动态数据时更具优势。 imgui1.78的特点包括:强大的自动布局系统、灵活的扩展性以及多平台支持(Windows、Linux、macOS),尤其适合移植至Unity或Unreal Engine等游戏引擎。 精简封装的重要性在于,虽然原版示例代码可能较为混乱,但对于初学者或希望快速集成到项目中的开发者而言,经过优化后可提供更加清晰的结构和易于理解的接口,从而简化使用过程。 该库包含以下核心实现文件:imgui.cpp、imgui_widgets.cpp、imgui_draw.cpp等,涵盖了所有的UI元素及逻辑。其DirectX 11版本支持与DX11图形接口的无缝对接。此外,提供的头文件包括imgui.h(API及数据结构定义)、imstb_truetype.h(TrueType字体加载渲染)以及imgui_internal.h(内部函数和结构体)。其他相关文件如imstb_textedit.h、imstb_rectpack.h也提供了丰富功能如输入框等。 快速集成步骤包括:将源文件添加至项目目录;初始化Imgui库;创建并更新帧;在渲染阶段调用Draw函数。具体操作可
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值