假设您将 imgui 下载到一个名为 $IMGUI_DIR并且包含您的主要功能的文件是 main.cpp,您的编译命令行应如下所示:(\ 只是用来分解命令)
g++ main.cpp -o main
$IMGUI_DIR/imgui*.cpp $IMGUI_DIR/backends/imgui_impl_glfw.cpp $IMGUI_DIR/backends/imgui_impl_opengl3.cpp
-I $IMGUI_DIR -I $IMGUI_DIR/backends
-lglfw -lGL
按顺序,您告诉编译器:
您的代码在哪里以及将输出放在哪里
要包含哪些 Imgui 代码,即核心库和您要使用的两个后端
===
启动 ImGui(GLFW + MinGW 版本)
更新:2017年12月5日
上次在Cinder上准备ImGui环境的作者了解到Cinder是设计处理的主要环境,并尝试准备GLFW和ImGui这两个更通用的环境。
被不熟悉的C++环境、Makefile和gcc规范困扰着……
<环境>
Windows10 家庭版 64 位
GCC 4.8.1
・什么是ImGui?
ImGui 是一个框架,可以轻松创建与 OpenGL 和 DirectX 一起使用的轻量级 GUI 工具。
貌似主要用于调试和仿真中的数值调整。
由于缺乏代码和良好的设计,它似乎最近引起了人们的关注。
我个人喜欢圆点的感觉,所以选择了它。
・ 选择运行 ImGui 的 OpenGL 环境
既然知道了 ImGui 是什么,接下来就是选择环境了。
OpenGL中有多种环境,你可以自由选择。
上次选的Cinder好像是图形人喜欢用的环境。
如果你想知道做什么样的环境,它是一个海外站点,但你可能想参考 OpenGL Wiki。
( https://www.khronos.org/opengl/wiki/Related_toolkits_and_APIs )
这次我将在一个名为 GLFW 的环境中制作它。
・环境维护(下载)所以,我会加入 GLFW。
首先,让我们去 GLFW 网站
GLFW 网站 ( http://www.glfw.org/ )
然后按上面的下载。
单击“32 位 Windows 二进制文件”按钮进行下载。
你现在有了 GLFW。
接下来,这次下载主ImGui。
你可以从 Github 下载它,所以让我们搞砸它。
(网址:https 😕/github.com/ocornut/imgui )
这样就完成了要下载的文件。让我们继续设置文件。
・环境维护(文件安装)
首先,将 GLFW 解压到合适的目录。
然后将 .a 文件放在 lib-mingw 的其他地方。
如果你不这样做,你稍后会得到一个错误。
接下来,将 ImGui 解压缩到您选择的目录。
这就是设置文件的全部内容。
…但是 ImGui 不能单独使用。
最重要的是,因为有多个文件,所以管理起来很麻烦。
因此,让我们将文件放在一个静态库中。首先,下载将我创建的 ImGui 文件放在一起的 bat 文件。(执行需要gcc)
(网址:https 😕/www.dropbox.com/s/l06nr4f1wh8wuqt/glfw_imgui.zip?dl=0 )一、在“generate_folder.bat”中下载的文件设置 GLFW_PATH =请把GLFW的路径写进去。
(我认为它会类似于“C:\ ~~~~~ \ glfw-3.2.1.bin.WIN32”)然后,将此文件放入之前解压的ImGui的“imgui-master\examples\opengl3_example”中并执行。然后,头文件将被收集在“include”文件夹中,源文件将被收集在“src”文件夹中。
现在它更容易使用了。
它很容易使用,但接下来,我将编译并放在 src 中您可能不会编辑的文件。
以同样的方式将文件“build_Mingw.bat”放在“imgui-master\examples\opengl3_example”中并执行。
然后,我认为在文件夹“mingw_obj”中创建了一些“.o”文件和“libImGui.a”。
通过在编译时包含这个 .a 文件,ImGui 可以在 GLFW 上使用。-运行 ImGui现在让我们创建一个文件。
首先,创建 main.cpp。(之前放在zip的sample文件夹中)
使用 GLFW 进行 ImGui 时,需要以下标头。
#include <imgui.h>
#include <imgui_impl_glfw_gl3.h>
#include <GL / gl3w.h>
#include <GLFW / glfw3.h>如果甚至没有这些标头之一,则会发生错误。
有关更多信息,请阅读 GLFW 参考和 ImGui 参考之后,像示例中的 main.cpp 一样编写。主函数()
{
// 初始化 GLFW
如果(!glfwInit()){
返回-1;
}
GLFWwindow * 窗口 = glfwCreateWindow (640, 480, “hoge”, NULL, NULL);
如果(!窗口)
{
glfw终止();
返回-1;
}
glfwMakeContextCurrent(窗口);
glfwSwapInterval (1);
// glfwShowWindow (窗口);
gl3wInit();
ImGui_ImplGlfwGL3_Init(窗口,真);
而(!glfwWindowShouldClose(窗口)){
//清空缓冲区
glClearColor (0.2f, 0.2f, 1.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);
ImGui_ImplGlfwGL3_NewFrame ();
ImGui :: Begin (“config 1”);
ImGui :: Text (“Hello ImGui on GLFW !!!”);
ImGui::End();
ImGui::ShowTestWindow();
ImGui::Render();
// 双缓冲交换
glfwSwapBuffers(窗口);
glfwPollEvents();
}
ImGui_ImplGlfwGL3_Shutdown();
// GLFW 终止进程
glfw终止();返回0;
}顺便一提,
gl3wInit();
ImGui_ImplGlfwGL3_Init(窗口,真);
ImGui_ImplGlfwGL3_NewFrame ();
ImGui::Render();
ImGui_ImplGlfwGL3_Shutdown();
这五个是必不可少的元素。一旦你写了这个,让我们编译它。在编译时
- 之前创建的mingw_obj文件的路径
使用-I 选项,
-GLFW mingw-lib 库路径
使用-L 选项,
・ Opengl32
・ Glfw3
必须与-l 选项一起添加。如果出现错误,则表示缺少上述其中一项,因此请检查。当您执行创建的exe时,将出现以下屏幕。让我们将 glfw3.dll 复制到与要运行的 exe 相同的文件夹中。
然后,现在您可以在 GLFW 上运行 ImGui!
时间很长…
・题外话
您可以使用 Makefile 轻松做到这一点,所以请尝试一下。示例中的 Makefile 是
IMGUI_EXAMPLE_PATH:=
GLFW_LIB_PATH:=
您可以通过将 ImGui 的 OpenGL3 示例的路径和 GLFW 的 mingw-lib 的路径并执行 mingw32-make 轻松制作。
如果添加 -mwindows 选项,则可以使用不出现命令提示屏幕的设置进行编译,因此添加它可能会很好。