ImGui 是什么?亲爱的 ImGui 详解 (2026)

ImGui(Dear ImGui)是一个为 C++ 设计的即时模式 GUI 库。它每帧绘制菜单,不保留任何小部件树,这在游戏工具和原生客户端中很常见.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • ImGui (Dear ImGui) 是一个用于 C++ 的小型即时模式 GUI 库。
  • 它从函数调用中每帧重新绘制菜单,无需维护任何小部件树。
  • 原生客户端和工具选择它来在 3D 场景上实现低延迟的叠加层。
  • 这是一个 C++ 模式;Java Fabric 模组使用游戏自身的 GUI 钩子.

ImGui,即 Dear ImGui 的缩写,是一个为 C++ 设计的小型即时模式 GUI 库。它从纯粹的函数调用中每帧绘制一个全新的菜单,而不是保留一个包含小部件对象的树结构。这使得它连接起来非常快速,并且易于叠加在游戏现有的渲染循环之上,这也是为什么工具和原生客户端使用它来实现低延迟的覆盖层.

Opal 的适配

Opal 是一个 Fabric 模组,因此它通过游戏自身的 GUI 钩子构建其界面,而不是 ImGui。 如果你想在不触及原生代码的情况下添加功能,GraalVM JavaScript 脚本引擎是你的起点。 请参阅 设置指南脚本指南

何謂即時模式

ImGui 在每一幀重新構建介面。你不會創建一個按鈕物件並儲存它。你呼叫一個函數,指示「在這裡繪製一個按鈕」,這個呼叫既繪製按鈕,又告訴你本幀是否被點擊。

保留模式工具包則相反。它在記憶體中維護一個長壽命的元件樹,當狀態改變時,你更新這個樹。即時模式捨棄了這種持久的結構,換取了從上到下讀取並與你自己的狀態並排存在的程式碼。

為什麼工具和客戶端選擇它

ImGui 廣泛用於覆蓋 3D 畫面的菜單。原因很實際。

  • 低延遲: 它連接到程式已經渲染的畫框,因此菜單會立即反應。
  • 簡潔集成: 一個視窗和幾個控制項只需要少量的函數呼叫。沒有佈局檔案,也沒有需要管理的單獨 UI 執行緒。
  • 獨立性: 該函式庫的依賴性很少,並且可以整合到常見的圖形後端,因此不會引入大型框架。
  • 方便調試: 用於構建發布版菜單的呼叫,也可以用於構建開發者在構建功能時使用的臨時調試面板。

即時模式與保留模式

方面即时模式 (ImGui)保留模式工具包
状态所有权你的代码持有数据工具包持有小部件树
每帧工作每帧重建 UI更改时更新树
设置成本几个函数调用更多预先结构
最佳适用性重叠、工具、游戏菜单大型文档式应用程序

如何与原生客户端配合

一个用 C++ 构建的原生实用程序客户端通常在游戏的帧上使用 ImGui 绘制其菜单。菜单代码在渲染循环中运行,读取客户端自己的设置,并直接将更改写回。没有单独的 UI 进程,因此切换功能只需对客户端已经拥有的值进行一次函数调用。

这是一个 C++ 模式。一个用 Java 编写的 Fabric 模组通过游戏的 GUI 钩子访问其界面,因此 ImGui 主要出现在作为原生代码交付的客户端中,而不是作为 Java 模组。

常见问题解答