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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenGL是一种跨平台的图形库,用于渲染2D和3D图形。IMGUIImmediate Mode GUI)是一种简单的用户界面编程模式,它与传统的保留模式GUI相比更加直接和实时。曲面贴图是一种在3D模型表面上贴上纹理以增加细节和真实感的技术。 以下是一个使用OpenGLIMGUI实现曲面贴图的代码示例: ```cpp #include <GL/glut.h> #include <imgui.h> #include <imgui_impl_glut.h> // 初始化OpenGLIMGUI void init() { glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow("Surface Texture Mapping"); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGui_ImplGLUT_Init(); } // 渲染函数 void render() { glClear(GL_COLOR_BUFFER_BIT); // 在这里进行曲面贴图的绘制逻辑 ImGui_ImplGLUT_NewFrame(); // 在这里使用IMGUI绘制用户界面 ImGui::Render(); ImGui_ImplGLUT_RenderDrawData(ImGui::GetDrawData()); glutSwapBuffers(); } // 主循环 void mainLoop() { glutMainLoop(); } int main(int argc, char** argv) { glutInit(&argc, argv); init(); // 设置OpenGL回调函数 glutDisplayFunc(render); glutIdleFunc(render); // 进入主循环 mainLoop(); // 清理资源 ImGui_ImplGLUT_Shutdown(); ImGui::DestroyContext(); return 0; } ``` 这段代码使用了OpenGLIMGUI库来实现曲面贴图。你可以在`render`函数中编写曲面贴图的绘制逻辑,并在其中使用IMGUI库来绘制用户界面。在`main`函数中,我们初始化OpenGLIMGUI,并设置回调函数来处理渲染和用户输入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值