零依赖的C++ 图形用户界面库—ImGui

《开源精选》是我们分享 Github、Gitee 等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个零依赖的 C++ 图形用户界面库——ImGui。

零依赖的C++ 图形用户界面库—ImGui

Dear ImGui 是一个基于 C++ 的零依赖图形用户界面库,它特别适合集成到游戏引擎(用于工具)、实时 3D 应用程序、全屏应用程序、嵌入式应用程序或操作系统功能非标准的控制台平台上的任何应用程序中。

功能特性

  • • ImGui 的核心是独立包含在几个与平台无关的文件中,您可以在应用程序或者引擎中轻松编译存储库根文件夹中的所有文件(imgui*.cpp 、imgui*.h )。

  • • ImGui 不需要特定的构建过程,您可以将 .cpp 文件添加到现有项目中。

  • • ImGui 可以渲染从后端传递的鼠标键盘游戏手柄输入等各种设置。

  • • /backends文件夹中提供了各种图形 api 和渲染平台的后端,以及/examples文件夹中的示例应用程序。

示例代码

代码①:设置:深色样式(左),浅色样式(右)

ImGui::Text("Hello, world %d", 123);
if (ImGui::Button("Save"))
    MySaveFunction();
ImGui::InputText("string", buf, IM_ARRAYSIZE(buf));
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);

结果:

零依赖的C++ 图形用户界面库—ImGui

代码②:创建一个名为“My First Tool”的窗口,带有一个菜单栏。

// Create a window called "My First Tool", with a menu bar.
ImGui::Begin("My First Tool", &my_tool_active, ImGuiWindowFlags_MenuBar);
if (ImGui::BeginMenuBar())
{
    if (ImGui::BeginMenu("File"))
    {
        if (ImGui::MenuItem("Open..", "Ctrl+O")) { /* Do stuff */ }
        if (ImGui::MenuItem("Save", "Ctrl+S"))   { /* Do stuff */ }
        if (ImGui::MenuItem("Close", "Ctrl+W"))  { my_tool_active = false; }
        ImGui::EndMenu();
    }
    ImGui::EndMenuBar();
}

// Edit a color (stored as ~4 floats)
ImGui::ColorEdit4("Color", my_color);

// Plot some values
const float my_values[] = { 0.2f, 0.1f, 1.0f, 0.5f, 0.9f, 2.2f };
ImGui::PlotLines("Frame Times", my_values, IM_ARRAYSIZE(my_values));

// Display contents in a scrolling region
ImGui::TextColored(ImVec4(1,1,0,1), "Important Stuff");
ImGui::BeginChild("Scrolling");
for (int n = 0; n < 50; n++)
    ImGui::Text("%04d: Some text", n);
ImGui::EndChild();
ImGui::End();

结果:

零依赖的C++ 图形用户界面库—ImGui

演示:调用 ImGui::ShowDemoWindow() 函数将创建一个演示窗口,展示各种功能和示例。该代码始终可参考 imgui_demo.cpp 。

零依赖的C++ 图形用户界面库—ImGui

项目展示

零依赖的C++ 图形用户界面库—ImGui游戏控制台

零依赖的C++ 图形用户界面库—ImGui游戏编辑器

零依赖的C++ 图形用户界面库—ImGui3D软件

零依赖的C++ 图形用户界面库—ImGui调试界面

零依赖的C++ 图形用户界面库—ImGui数据监控


传送门

开源协议:Apache2.0

开源地址:https://github.com/ocornut/imgui

-END-


原文始发于微信公众号(开源技术专栏):零依赖的C++ 图形用户界面库—ImGui

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/71065.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!