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