开发环境:ubuntu18.04、opengl3

imgui介绍

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

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,详细开发参照官方文档