平台后端提供了 Dear ImGui 与各种窗口/输入系统之间的接口。它们处理平台特定的方面,如输入事件(鼠标、键盘、触摸、游戏手柄)、窗口管理、剪贴板支持等。本页面重点介绍 Dear ImGui 中平台后端的设计、实现和使用。有关处理图形API集成的渲染器后端的信息,请参阅渲染器后端。
平台后端负责
Dear ImGui 需要平台后端和渲染器后端才能在应用程序中正常运行。平台后端处理窗口/输入管理,而渲染器后端将 ImGui 绘图命令转换为图形API调用。
来源:backends/imgui_impl_glfw.cpp1-23 backends/imgui_impl_sdl3.cpp1-20 backends/imgui_impl_win32.cpp1-18
所有平台后端都遵循一致的接口模式
来源:backends/imgui_impl_glfw.cpp587-648 backends/imgui_impl_sdl3.cpp459-532 backends/imgui_impl_win32.cpp154-206
每个后端都在 ImGui 上下文中维护一个状态结构
这种设计允许
来源: backends/imgui_impl_win32.cpp108-141
要将平台后端集成到您的应用程序中,请遵循以下步骤
来源:backends/imgui_impl_glfw.cpp587-648 backends/imgui_impl_sdl2.cpp459-532 backends/imgui_impl_win32.cpp154-206
Dear ImGui 为各种窗口系统提供了平台后端
| 后端 | 文件 | 描述 | 主要功能 |
|---|---|---|---|
| GLFW | imgui_impl_glfw.h/cpp | 使用 GLFW 库的跨平台支持 | 鼠标、键盘、游戏手柄、剪贴板、光标 |
| SDL2 | imgui_impl_sdl2.h/cpp | 使用 SDL2 库的跨平台支持 | 鼠标、键盘、游戏手柄、剪贴板、光标、IME |
| SDL3 | imgui_impl_sdl3.h/cpp | 使用 SDL3 库的跨平台支持 | 鼠标、键盘、游戏手柄、剪贴板、光标、IME |
| Win32 | imgui_impl_win32.h/cpp | 原生 Windows API | 鼠标、键盘、游戏手柄、光标、DPI感知 |
| OSX | imgui_impl_osx.h/mm | 原生 macOS/Cocoa API | 鼠标、键盘、游戏手柄、剪贴板、光标、IME |
| Android | imgui_impl_android.h/cpp | 原生 Android API | 触摸、键盘 |
| Allegro5 | imgui_impl_allegro5.h/cpp | 使用 Allegro5 的跨平台支持 | 鼠标、键盘、剪贴板、光标 |
| GLUT | imgui_impl_glut.h/cpp | 使用 GLUT 的旧版跨平台支持 | 基本的键盘和鼠标(有限) |
来源:提供的仓库中所有后端头文件。
平台后端将平台特定的输入事件转换为 ImGui 的统一输入系统
来源:backends/imgui_impl_glfw.cpp195-322 backends/imgui_impl_sdl3.cpp172-322 backends/imgui_impl_win32.cpp425-486
现代后端跟踪输入源以区分鼠标、触摸屏和笔输入
来源:backends/imgui_impl_sdl3.cpp353-361 backends/imgui_impl_win32.cpp499-525
大多数后端通过平台 API 实现剪贴板支持
来源:backends/imgui_impl_sdl3.cpp134-146 backends/imgui_impl_glfw.cpp604-611
支持鼠标光标的后端创建平台特定的光标对象
在每一帧期间,后端检查光标是否应该更新
来源:backends/imgui_impl_glfw.cpp622-637 backends/imgui_impl_sdl3.cpp500-510 backends/imgui_impl_win32.cpp237-268
一些后端支持输入法编辑器 (IME),用于需要复杂文本输入的语言
来源:backends/imgui_impl_sdl3.cpp148-169 backends/imgui_impl_osx.mm137-169
许多后端使用回调系统来拦截平台事件
后端通常提供以下选项:
来源:backends/imgui_impl_glfw.cpp527-567 backends/imgui_impl_glfw.cpp403-420
为您的应用程序选择平台后端时,请考虑:
最常用的后端是
来源:提供的仓库中所有后端头文件。
来源:backends/imgui_impl_glfw.cpp180-186 backends/imgui_impl_sdl3.cpp125-127
来源:所有后端实现中的注释。