开源项目精选:Dear ImGui —— 轻量高效的 C++ 即时模式 GUI 框架

目录

前言

最近在项目中接触到了Dear ImGui这个强大的开源即时模式GUI库,它非常适合用于开发游戏调试工具、编辑器、甚至是各种炫酷的Demo。很大多数人一样,第一次了解就对ImGui的强大功能心动不已,但第一步的项目配置却劝退了不少人。

官方的示例代码虽然齐全,但对于一个全新的Visual Studio项目,需要手动下载ImGui源码、删除其中官方Demo的部分、配置渲染库...... 一套流程下来,其实也有一定的学习成本。

为了解决这个痛点,我特意创建并开源了一个 "开箱即用"的Imgui_Windows_Demo项目,目标是5分钟之内,在Windows的Visual Studio中看到一个ImGui窗口!

Imgui 项目地址(主仓库):​ https://github.com/ocornut/imgui

镜像仓库(备用地址): https://gitcode.com/GitHub_Trending/im/imgui

Imgui_Windows_Demo:https://gitcode.com/leozy/Imgui_Windows_Demo

项目简介

本项目基于 Visual Studio 2019 构建,整合了以下三个核心组件:

Dear ImGui 核心界面系统

SDL3 图形与窗口管理(含 SDL_image 扩展)

imgui_markdown ------ 在 ImGui 中渲染 Markdown 文本

所有依赖均已预编译并包含在仓库中,无需额外安装 vcpkg 或 CMake。

主界面的搭建

本 Demo 项目提供了直接可用的 SDL3 库,并配置了 ImGui 核心所需的文件路径。理论上,只需执行以下三步:

  • git clone https://gitcode.com/leozy/Imgui_Windows_Demo.git
  • 双击 Imgui_Windows_Demo.sln 打开解决方案,选择x86
  • 按 F5 编译并运行
    即可看到一个带有 ImGui 窗口的空白 SDL 窗口。

项目核心文件为Imgui_Windows_Demo/Imgui_Windows_Demo/Imgui_Windows_Demo.cpp,

可直接在WinMain函数中实现自己的逻辑。

cpp 复制代码
// Start imgui
ImGui::Begin("Imgui_Windows_Demo", NULL, imgui_window_flags);
ImGui::Text("Your first imgui project");
// TODO
ImGui::End();

SDL_image

为了方便在项目中加载 PNG、JPG 等格式的图像资源,项目已集成 SDL_image 3.0项目。

仓库地址:https://github.com/libsdl-org/SDL_image

使用示例:

可以在代码中这样加载一张本地图片并绑定为 OpenGL 纹理:

cpp 复制代码
#include <SDL_image.h>

// 初始化 SDL_image(支持 PNG/JPG)
if (!(IMG_Init(IMG_INIT_PNG | IMG_INIT_JPG) & (IMG_INIT_PNG | IMG_INIT_JPG))) {
    printf("SDL_image 初始化失败: %s\n", IMG_GetError());
}

// 加载图片
SDL_Surface* surface = IMG_Load("test.png");
if (!surface) {
    printf("无法加载图片: %s\n", IMG_GetError());
}

imgui_markdown

有时我们需要在 UI 中展示富文本说明、帮助文档或 README 内容。纯 ImGui 的 Text() 功能有限,而 imgui_markdown 扩展正好解决了这个问题。

仓库地址:https://github.com/enkisoftware/imgui_markdown

本项目已内置该扩展,支持以下 Markdown 语法:

  • 标题(#, ##)
  • 粗体(text )、斜体(text
  • 链接(text
  • 行内代码( code )
  • 列表(有序/无序)
cpp 复制代码
#include "imgui_markdown.h"

static const char* markdown_text = R"(
# 欢迎使用 Imgui_Windows_Demo

这是一个 **开箱即用** 的 ImGui 开发模板。

- 支持 SDL3
- 内置 SDL_image
- 集成 Markdown 渲染

访问项目主页:[Imgui_Windows_Demo](https://gitcode.com/leozy/Imgui_Windows_Demo)
)";

ImGui::Begin("Markdown 示例");
ImGuiMarkdown::Render(markdown_text);
ImGui::End();
相关推荐
冬奇Lab6 小时前
每日一个开源项目(第147篇):HyperGraphRAG - 用超图表示 N 元关系,RAG 的第三代范式
人工智能·开源·graphql
网易云信9 小时前
Cursor点燃个人开发者,企业级AI为何频频受挫?Agent工厂从提效工具到AI员工的跃迁
人工智能·开源
ZzT11 小时前
在 GitHub 上 @一下 claude,它自己把 issue 改成 PR
人工智能·开源
饼干哥哥11 小时前
最强视频创作工作流:Image2 + Seedance 2.0,Topview一键闭环|跨境电商版
开源·产品·设计
ApacheSeaTunnel12 小时前
当多表数据涌入,Apache SeaTunnel 如何巧妙化解主键冲突?
大数据·开源·数据集成·seatunnel·技术分享·数据同步
稀土熊猫君13 小时前
一个人能做出什么开源项目?
vue.js·后端·开源
郝学胜_神的一滴17 小时前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
狂师18 小时前
比 Playwright 更给力,推荐一个AI Agent的浏览器自动化开源项目!
前端·开源·测试
AI袋鼠帝19 小时前
开源「仓颉.Skill」2.0,你现在可以蒸馏任何视频!
开源·aigc
冬奇Lab1 天前
每日一个开源项目(第146篇):openpilot - 开源自动驾驶辅助系统,曾在 Consumer Reports 评测中超过特斯拉 Autopilot
人工智能·开源·自动驾驶