ImGui是一个轻量级的C++图形界面库,它可以用于创建各种交互式的工具和编辑器。具有跨平台、高性能的特点。目前很多游戏引擎和测量软件都有使用他。
ImGUI自身不能创建窗口,需要使用Win32API或glfw或SDL等工具来创建窗口,另外需要使用OpenGL或DirectX、vulkan用于渲染图形等,SDL、OpenGL等均被称为后端(backends)。
目前很多开源项目都是用的这个库进行二次开发,所以进行记录一下。这个库本身不大,代码也不多,但是github上没有提供cmake文件,对于不同的例子有makefile(针对ubuntu系统),在ubuntu系统中可以直接选择相应的后台例子,make查看运行效果。
下面记录用windows+mingw编译过程。
参考链接:https://blog.youkuaiyun.com/m0_46079750/article/details/131366874
1、下载ImGui源码:前往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 第三方库文件,用于矩形打包、文本编辑和字体渲染
2、新建一个自己的项目ImGuiTest,main.cpp 是把\imgui\examples\example_glfw_opengl3中main.cpp拷贝过来。
ImGUITest
├─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
3、然后编写cmakelists.txt
cmake_minimum_required(VERSION 3.10)
project(imguiTest)
set(CMAKE_CXX_STANDARD 11)
set(GLFW3_WINDOWS ${CMAKE_CURRENT_SOURCE_DIR}/lib/GLFW/lib/windows/glfw3.dll)
set(EXECUTABLE ${CMAKE_PROJECT_NAME})
include_directories(lib/GLFW/inc
lib/imgui
lib/imgui/backends
)
link_directories(
lib/GLFW/lib/windows
)
file(GLOB_RECURSE IMGUI_SRCS lib/imgui/*.cpp)
add_executable(${EXECUTABLE} WIN32 src/main.cpp ${IMGUI_SRCS})
target_link_libraries(${EXECUTABLE} ${GLFW3_WINDOWS} -static opengl32)
add_custom_command(TARGET ${EXECUTABLE} POST_BUILD #把dll拷贝到输出目录
COMMAND ${CMAKE_COMMAND} -E copy
${GLFW3_WINDOWS}
${CMAKE_BINARY_DIR}/glfw3.dll)
4、用vscode打开代码文件夹,新建终端输入:
cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..

5、输入 mingw32-make

终端输入 ./imguiTest.exe 运行,或者直接双击运行

6、用VScode调试
点击vscode左边调试按钮,新建launch.json文件,选择c++gdb文件,内容如下
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Windows 上的 Bash 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/imguiTest.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/build",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Program Files\\mingw64_x86_64_win32\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
主要修改 "program":为自己的exe路径, "miDebuggerPath":为自己的gdb路径。
现在可以断点调试了。
857

被折叠的 条评论
为什么被折叠?



