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

<think>好的,我需要处理用户关于寻找ImGui入门教程的请求。首先,用户提到他们之前使用过Unity,但转向Unity的原因是其布局设计和用户习惯的延续,现在他们作为新手,想按照旧版教程学习最新的编辑器工具。因此,用户可能希望找到适合初学者的ImGui教程,尤其是与Unity或类似工具相关的。 首先,我要确认用户的需求是寻找ImGui的入门教程,而ImGui通常指的是Dear ImGui,这是一个用于C++的即时模式图形用户界面库,广泛用于游戏开发和工具开发。用户可能是在游戏开发使用Unity,现在想集成或学习ImGui来增强编辑器功能或创建自定义工具。 接下来,我需要回忆Dear ImGui官方资源。官方网站(https://github.com/ocornut/imgui)通常有详细的文档和示例,这对新手来说非常重要。另外,用户可能需要具体的教程步骤,比如如何设置ImGui项目,基础控件的使用,以及集成到游戏引擎中的方法,比如Unity。 但需要注意的是,ImGui本身是用于C++的,而Unity主要使用C#。因此,用户可能需要寻找Unity中集成ImGui的解决方案,比如使用第三方插件或库,例如Unity的ImGui插件,如“Dear ImGui for Unity”或类似的资源。这些插件可能允许用户在Unity编辑器中使用ImGui的功能,或者直接在游戏运行时使用。 另外,用户作为新手,可能需要步骤清晰的教程,包括环境配置、示例代码和实际应用案例。因此,我应该推荐官方文档作为起点,然后提供一些社区教程或视频教程链接,比如YouTube上的入门教程,或者像Raymond Collingbourne的教程系列,这对视觉学习者可能有帮助。 还需要考虑用户可能遇到的常见问题,比如如何渲染ImGui界面,如何处理输入事件,以及如何与Unity的现有UI系统共存。因此,推荐的教程应该涵盖这些方面,或者至少引导用户如何查找这些信息。 最后,确保提供的链接和资源是最新的,因为ImGui和Unity的版本更新可能会导致旧教程过时。用户提到他们希望按照旧版教程学习,但使用最新工具,因此需要强调检查教程的发布日期或兼容性。</think>### ImGui入门教程推荐 ImGui(Dear ImGui)是一个面向C++的即时模式图形用户界面库,常用于游戏引擎工具开发。以下是为初学者整理的教程资源及学习路径: #### 1. 官方基础教程(必读) - **官方示例仓库**包含超过100个控件使用案例,涵盖窗口创建、按钮交互、列表控件等基础功能: ```cpp // 示例代码:创建窗口和按钮 if (ImGui::Begin("My First Window")) { if (ImGui::Button("Click Me")) { // 按钮点击处理 } } ImGui::End(); ``` 访问地址:[Dear ImGi GitHub仓库](https://github.com/ocornut/imgui)[^1] #### 2. Unity集成方案 对于Unity开发者,推荐通过以下方式集成: - **Unity官方插件**:Asset Store中的《Dear ImGui for Unity》插件提供现成的渲染后端支持 - **跨平台配置**:通过NuGet安装`ImGui.NET`包实现C#绑定 #### 3. 视频教程推荐 - 《Getting Started with Dear ImGui》系列教程(作者:Raymond Collingbourne)演示了: - 在OpenGL/DirectX环境中搭建界面框架 - 实现实时数据监控面板 - 构建关卡编辑器原型 观看地址:[YouTube教学频道](https://www.youtube.com/c/Enemyname_raymond)[^2] #### 4. 进阶学习路径 1. **布局系统**:掌握`ImGui::Columns`多列布局和`ImGuiStyle`样式定制 2. **扩展开发**:学习使用`ImGui::PlotLines`实现数据可视化 3. **交互优化**:研究`ImGuiIO`结构体的输入事件处理机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值