ImGUI项目建立(cmake+MinGW64)

Dear ImGUI

ImGui是一个轻量级的C++图形界面库,它可以用于创建各种交互式的工具和编辑器。具有跨平台、高性能的特点。

ImGUI自身不能创建窗口,需要使用Win32API或glfw或SDL等工具来创建窗口,另外需要使用OpenGL或DirectX、vulkan用于渲染图形等,SDL、OpenGL等均被称为后端(backends)

  • SDL负责创建窗口对象,处理用户输入等
  • OpenGL负责绘制图形,设置着色器,更新uniform变量等
  • imgui负责创建和渲染GUI元素,如文本,按钮,颜色选择器等

ImGui的使用方法很简单,只需要将ImGui的源码文件添加到自己的项目中,然后选择一个合适的后端(例如glfw或SDL,OpenGL或DirectX),就可以开始绘制各种控件和窗口了。

下载

前往GitHub下载https://github.com/ocornut/imgui

下载完成后,你会看到ImGui的目录结构如下:

imgui/

  • backends/ 后端文件夹,包含了不同平台和渲染器的实现代码

  • examples/ 示例文件夹,包含了各种使用ImGui的示例程序

  • misc/ 杂项文件夹,包含了一些辅助工具和扩展模块

  • imconfig.h 配置文件,可以用来修改ImGui的一些默认设置

  • imgui.cpp/imgui.h ImGui的核心源码文件,必须添加到你的项目中

  • imgui_demo.cpp/imgui_demo.h ImGui的演示源码文件,包含了各种控件和窗口的示例代码

  • imgui_draw.cpp/imgui_draw.h ImGui的绘制源码文件,负责渲染各种图形元素

  • imgui_internal.h ImGui的内部头文件,包含了一些高级功能和实现细节

  • imgui_tables.cpp/imgui_tables.h ImGui的表格源码文件,提供了创建和管理表格的功能

  • imgui_widgets.cpp/imgui_widgets.h ImGui的控件源码文件,提供了创建和管理各种控件的功能

  • imstb_rectpack.h/imstb_textedit.h/imstb_truetype.h 第三方库文件,用于矩形打包、文本编辑和字体渲染

使用

要在自己的项目使用ImGUI,需要:

  1. 把根目录的 .cpp, .h 文件都复制到自己的项目
  2. 选择一个合适的后端组合,比如 glfwopengl

接下来将使用glfw和opengl作为后端创建一个ImGUI的示例项目(使用cmake+MinGW编译)

可以用我建立好的项目:https://gitcode.net/m0_46079750/imguitemplate

首先建立项目目录结构:

image-20230624211039887 在这里插入图片描述
├─lib
│  ├─glfw  # glfw可以自己去官网下载、编译
│  └─imgui
│      └─backend
└─src
  • lib 表示需要的库文件,需要2个库,一个是glfw,一个是imgui
  • src为自己的源码文件

glfw可以自己去官网下载、编译,也可以在我的项目里直接复制过去

在lib创建imgui文件夹,然后把imgui根目录下的几个h、cpp文件均拷贝过来

lib/imgui目录如下:

image-20230624211846983

然后把imgui项目的backends里用到的几个文件复制到自己项目的lib/imgui/backend文件夹,如下:

image-20230624211931065

最后去imgui项目里复制一个例子放到src文件夹下即可使用,例如这里使用glfw+opengl组合,因此就使用下面这个例子

image-20230624212521272

把这个例子里的main.cpp文件复制到src文件夹即可,最后的项目结构如下:

ImGUITemplate
├─lib
│  ├─glfw
│  └─imgui
│      │  imconfig.h
│      │  imgui.cpp
│      │  imgui.h
│      │  imgui_demo.cpp
│      │  imgui_draw.cpp
│      │  imgui_internal.h
│      │  imgui_tables.cpp
│      │  imgui_widgets.cpp
│      │  imstb_rectpack.h
│      │  imstb_textedit.h
│      │  imstb_truetype.h
│      │  LICENSE.txt
│      │
│      └─backend
│              imgui_impl_glfw.cpp
│              imgui_impl_glfw.h
│              imgui_impl_opengl3.cpp
│              imgui_impl_opengl3.h
│              imgui_impl_opengl3_loader.h
│
└─src
        main.cpp

然后编写cmakelists.txt

cmake_minimum_required(VERSION 3.10)
project(imguiTmpl)

set(CMAKE_CXX_STANDARD 11)

include_directories(lib/glfw/include
                    lib/imgui
                    lib/imgui/backend
        )
link_directories(
        lib/glfw/lib
)

file(GLOB_RECURSE IMGUI_SRCS lib/imgui/*.cpp)

add_executable(imguiTmpl WIN32 src/main.cpp ${IMGUI_SRCS}) #添加WIN32参数就不会显示控制台界面了
target_link_libraries(imguiTmpl glfw3.a opengl32)  # 链接库文件

最后使用cmake构建项目即可

运行示例如下:

image-20230624213435915

猜你喜欢

转载自blog.csdn.net/m0_46079750/article/details/131366874