Cos'è ImGui? ImGui Spiegato (2026)

ImGui (Dear ImGui) è una libreria GUI a modalità immediata per C++. Disegna i menu ogni frame senza un albero di widget persistente, cosa comune negli strumenti di gioco e nei client nativi.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • ImGui (Dear ImGui) è una piccola libreria GUI immediate-mode per C++.
  • Disegna il menu da zero ogni frame tramite chiamate di funzione, senza dover mantenere un albero di widget.
  • Client e strumenti nativi la scelgono per overlay a bassa latenza su una scena 3D.
  • È un pattern C++; un mod Java Fabric utilizza invece i propri hook GUI del gioco.

ImGui, abbreviazione di Dear ImGui, è una piccola libreria GUI immediate-mode per C++. Disegna un menu nuovo ad ogni frame direttamente da chiamate di funzione, invece di mantenere un albero di oggetti widget. Questo la rende facile da integrare e da sovrapporre al ciclo di rendering esistente di un gioco, motivo per cui gli strumenti e le applicazioni native la utilizzano per overlay a bassa latenza.

Dove si integra Opal

Opal è un mod Fabric, quindi costruisce la sua interfaccia attraverso i propri hook GUI del gioco piuttosto che ImGui. Se desideri aggiungere funzionalità senza modificare il codice nativo, il motore di scripting JavaScript GraalVM è il punto di partenza ideale. Consulta la guida all'installazione e la guida alla programmazione.

Cosa significa immediate-mode

ImGui ricostruisce l'interfaccia ad ogni frame. Non crei un oggetto pulsante e lo memorizzi. Chiami una funzione che dice "disegna un pulsante qui" e questa chiamata sia disegna il pulsante che ti dice se è stato cliccato in questo frame.

Un toolkit a retained-mode funziona all'opposto. Mantiene un albero di widget a lunga durata in memoria e aggiorni quell'albero quando lo stato cambia. Immediate-mode sacrifica quella struttura persistente per un codice che legge dall'alto verso il basso e vive accanto al tuo stato.

Perché strumenti e client lo scelgono

ImGui è popolare per i menu che si sovrappongono a una scena 3D. I motivi sono pratici.

  • Bassa latenza: si integra in un frame che il programma sta già renderizzando, quindi il menu reagisce immediatamente.
  • Pochi collegamenti: una finestra e pochi controlli sono un numero limitato di chiamate di funzione. Non c'è file di layout e nessun thread UI separato da gestire.
  • Autonomo: la libreria ha poche dipendenze e si integra con i backend grafici comuni, quindi non include un framework pesante.
  • Facile da debuggare: le stesse chiamate che costruiscono un menu di rilascio costruiscono anche i pannelli di debug usa e getta che gli sviluppatori utilizzano durante la creazione di una funzionalità.

Immediate-mode vs retained-mode

AspettoModalità immediata (ImGui)Toolkit a ritenzione
Proprietà dello statoIl tuo codice detiene i datiIl toolkit detiene un albero di widget
Lavoro per frameRicostruisci l'interfaccia utente ogni frameAggiorna l'albero in caso di modifica
Costo di configurazioneAlcune chiamate di funzionePiù struttura iniziale
Adatto aOverlay, strumenti, menu di giocoApp di tipo documento di grandi dimensioni

Come si adatta a un client nativo

Un client utility nativo costruito in C++ spesso disegna il suo menu con ImGui sopra il frame del gioco. Il codice del menu viene eseguito all'interno del ciclo di rendering, legge le impostazioni del client e scrive le modifiche direttamente. Non esiste un processo UI separato, quindi l'attivazione di una funzionalità è una singola chiamata di funzione su un valore che il client già possiede.

Questo è un pattern C++. Un mod Fabric scritto in Java raggiunge la sua interfaccia tramite gli hook GUI del gioco stesso, quindi ImGui compare principalmente nei client che vengono forniti come codice nativo piuttosto che come mod Java.

FAQ