imgui_xl
Dear ImGui XL — An enhanced community fork of Dear ImGui, focused on backend improvements, CI/CD fixes, sensors, and extended examples.
Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline-enabled application. It is fast, portable, renderer-agnostic, and self-contained (no external dependencies).
Live Demos
| Demo | Description | Link |
|---|---|---|
| Live ImGui (WASM) | Actual Dear ImGui compiled to WebAssembly via Emscripten | wasm/index.html |
| Showcase | Landing page with all demos + PR list | turtle-pb.github.io/imgui_xl |
| Echonation Visual | 5-mode audio-reactive canvas demo | echonation.html |
| Widget Playground | IDE-style demo with hierarchy, properties, console | widgets_playground.html |
| Pixel OS Model | Interactive Pixel 8 Pro phone simulator with working browser | pixel_os_demo.html |
Upstream Contributions
This fork tracks upstream and contributes back via PRs:
| PR | Issue | Description | Status |
|---|---|---|---|
| #9467 | #8878 | Android CI: Pin Gradle 9.4.1 via setup-gradle action | MERGED ✅ |
| #9473 | #8802 | OpenGL2/3: Backup and restore GL_UNPACK state in UpdateTexture() | MERGED ✅ |
| #9474 | #6627 | Android: Clear mouse pos on touch release + SDL2: Restore StartTextInput | MERGED ✅ |
| #9475 | — | OpenGL2: Defer texture destruction until UnusedFrames > 0 | Open |
| #9468 | #9390 | Vulkan: Fixed use-after-free in multi-viewport dynamic rendering | Closed |
| #9469 | #3446 | Android: Move JNI keyboard/clipboard into backend, add display metrics | Open (under review) |
Bug Fixes Summary
Merged upstream (3 PRs):
- Android CI — Pinned Gradle 9.4.1 via
setup-gradleaction, no binaries (#9467) - OpenGL GL_UNPACK state — Backup/restore
GL_UNPACK_ROW_LENGTHandGL_UNPACK_ALIGNMENTin UpdateTexture() to prevent caller state corruption (#9473) - Android touch release — Clear mouse position on
AMOTION_EVENT_ACTION_UPso buttons don't stay hovered (#6627) - SDL2 soft keyboard — Restored
SDL_StartTextInput()/SDL_StopTextInput()under#ifdef __ANDROID__for on-screen keyboard (#7636)
Open PRs (2):
- OpenGL2 texture destroy — Defer destruction until
UnusedFrames > 0, matching all other backends (#9475) - Android backend cleanup — Move JNI keyboard/clipboard into backend, add display metrics, breaking change to Init() signature (#9469, under review by Omar)
Go Bindings
This fork includes Go (cgo) bindings for Dear ImGui:
bindings/go/
imgui_bridge.h/.cpp — Thin C API bridge (extern "C")
imgui.go — Go cgo wrapper package
README.md — Full documentation
examples/example_golang/
main.go — Null-mode example
Makefile — Build targets
Sync Status
| Branch | Tracks | Status |
|---|---|---|
master |
upstream/master |
Synced |
docking |
upstream/docking |
Synced |
Quick Start
# Clone
git clone https://github.com/Turtle-PB/imgui_xl.git
cd imgui_xl
# Build example_null (no backend dependencies needed)
# Windows (MinGW)
mingw32-make -C examples/example_null
# Windows (MSVC)
cd examples\example_null
.\build_win32.bat
# Linux/macOS
cd examples/example_null
make
Contributing
See CONTRIBUTING.md for guidelines on submitting issues, PRs, and syncing with upstream.
License
MIT License — see LICENSE.txt for details.
Credits
Dear ImGui is developed by Omar Cornut and every direct or indirect contributor to the GitHub repository.
Echonation visuals inspired by @Echonation. Fork by Paul Adcock (Turtle-PB).