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,需要:
- 把根目录的 .cpp,.h文件都复制到自己的项目
- 选择一个合适的后端组合,比如 glfw和opengl
接下来将使用glfw和opengl作为后端创建一个ImGUI的示例项目(使用cmake+MinGW编译)
可以用我建立好的项目:https://gitcode.net/m0_46079750/imguitemplate
首先建立项目目录结构:
|  |  | 
|---|
├─lib
│  ├─glfw  # glfw可以自己去官网下载、编译
│  └─imgui
│      └─backend
└─src
- lib 表示需要的库文件,需要2个库,一个是glfw,一个是imgui
- src为自己的源码文件
glfw可以自己去官网下载、编译,也可以在我的项目里直接复制过去
在lib创建imgui文件夹,然后把imgui根目录下的几个h、cpp文件均拷贝过来
lib/imgui目录如下:

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

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

把这个例子里的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构建项目即可
运行示例如下:




















