Czym jest ImGui? Wyjaśnienie Dear ImGui (2026)

ImGui (Dear ImGui) to biblioteka GUI działająca w trybie natychmiastowym dla C++. Rysuje menu w każdej klatce bez przechowywanej struktury widżetów, co jest powszechne w narzędziach do gier i natywnych klientach.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • ImGui (Dear ImGui) to mała biblioteka GUI opartej na trybie natychmiastowym dla C++.
  • Rysuje menu od nowa w każdej klatce na podstawie wywołań funkcji, bez potrzeby utrzymywania drzewa widżetów.
  • Natywne klienty i narzędzia wybierają ją ze względu na niskie opóźnienia nakładek na scenę 3D.
  • Jest to wzorzec C++; mod Java Fabric wykorzystuje własne mechanizmy GUI gry.

ImGui, czyli Dear ImGui, to mała biblioteka GUI opartej na trybie natychmiastowym dla C++. Rysuje menu od nowa w każdej klatce bezpośrednio z wywołań funkcji, zamiast utrzymywać drzewo obiektów widgetów. Dzięki temu jest łatwa do podłączenia i można ją bez problemu nałożyć na istniejącą pętlę renderowania gry, co jest powodem, dla którego narzędzia i natywne aplikacje używają jej do nakładek o niskiej latencji.

Gdzie pasuje Opal

Opal jest modem Fabric, więc buduje swój interfejs za pomocą własnych mechanizmów GUI gry, a nie ImGui. Jeśli chcesz dodać funkcje bez ingerencji w kod natywny, GraalVM JavaScript scripting engine to miejsce, od którego warto zacząć. Zobacz przewodnik konfiguracji i przewodnik po skryptach.

Co oznacza tryb natychmiastowy

ImGui przebudowuje interfejs w każdym kadrze. Nie tworzysz obiektu przycisku i go przechowujesz. Wywołujesz funkcję, która mówi „narysuj przycisk tutaj”, a to wywołanie zarówno rysuje przycisk, jak i informuje cię, czy został kliknięty w bieżącym kadrze.

Zestaw narzędzi trybu zatrzymanego działa w przeciwnym kierunku. Przechowuje w pamięci długotrwałe drzewo widżetów i aktualizujesz je, gdy zmienia się stan. Tryb natychmiastowy rezygnuje z tej trwałej struktury na rzecz kodu, który czytany jest od góry do dołu i znajduje się obok twojego własnego stanu.

Dlaczego narzędzia i klienci go wybierają

ImGui jest popularne w przypadku menu, które nakładają się na scenę 3D. Powody są praktyczne.

  • Niskie opóźnienie: podłącza się do kadru, który program już renderuje, więc menu reaguje natychmiast.
  • Mało kleju: okno i kilka kontroli to garść wywołań funkcji. Nie ma pliku układu ani oddzielnego wątku interfejsu użytkownika do zarządzania.
  • Samodzielne: biblioteka ma niewiele zależności i pasuje do popularnych backendów graficznych, więc nie wciąga ciężkiego frameworka.
  • Przyjazne dla debugowania: te same wywołania, które budują menu w wersji produkcyjnej, budują również tymczasowe panele debugowania, których programiści używają podczas tworzenia funkcji.

Tryb natychmiastowy vs tryb zatrzymany

AspektTryb natychmiastowy (ImGui)Narzędzia trybu zatrzymanego
Własność stanuTwój kod przechowuje daneNarzędzia przechowują drzewo widżetów
Praca w każdej klatcePrzebuduj interfejs użytkownika w każdej klatceAktualizuj drzewo w przypadku zmian
Koszt konfiguracjiKilka wywołań funkcjiWięcej struktury na początku
Najlepsze dopasowanieNakładki, narzędzia, menu gierDuże aplikacje w stylu dokumentów

Jak to pasuje do klienta natywnego

Natywny klient narzędziowy napisany w C++ często rysuje swoje menu za pomocą ImGui na wierzchu klatki gry. Kod menu działa w pętli renderowania, odczytuje własne ustawienia klienta i zapisuje zmiany bezpośrednio z powrotem. Nie ma oddzielnego procesu interfejsu użytkownika, więc przełączanie funkcji to jedno wywołanie funkcji względem wartości, którą klient już posiada.

Jest to wzorzec C++. Mod Fabric napisany w Javie dociera do swojego interfejsu za pośrednictwem własnych haków GUI gry, więc ImGui pojawia się głównie w klientach, które są dostarczane jako kod natywny, a nie jako mody Java.

FAQ