赞
踩
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
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构建项目即可
运行示例如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。