- ImGuinz2
- Try Wasm demo in your browser
- Frontends and Backends
- Prerequisites
- Available libraries
- Build and run
- Examples screen shots
- Start your project
- Hiding console window
- SDL libraries
- My tools version
- Similar project ImGui / CImGui
- SDL game tutorial Platfromer
This project aims to simply and easily build Dear ImGui examples with C and Zig using Dear_Bindings as first step
and one can use many other libaries and examples with less external dependencies (except Raylib library).
DearBindings: v1.92.9b-docking
Dear ImGui: 1.92.9b dock (2026/08)
Click link for live demo: Click here

See zig_webgl / zig_wgpu examples
| Frontends | Backends |
|---|---|
| GLFW3 | OpenGL3 / Wasm(WebGL / WebGPU) |
| SDL3 | OpenGL3, SDL3GPU |
| Win32 | DirectX 11(D3D11) |
-
Zig Compiler
- zig-0.17.0: Windows 1 (2026/10/01)
- zig-x86_64-linux-0.17.0.tar.xz
- zig-0.18.0-dev.1+a6c6412a8: Windows
- zig-0.16.0 for Raylib examples
-
Windows11
-
Install MSys2/MinGW basic commands (make, rm, cp ...)
pacman -S make
-
-
Linux OS: Debian13 Trixie / Ubuntu families
sudo apt install make gcc lib{opengl-dev,gl1-mesa-dev,glfw3,glfw3-dev}- SDL3
Install SDL3 library
- SDL3
| Library | C Wrapper | Date | |
|---|---|---|---|
| YES | Dear ImGui | Dear_Bindings | 2024/06 |
| YES | ImGui-Knobs | CImGui-Knobs | 2025/07 |
| YES | ImGuiFileDialog | CImGuiFileDialog | 2025/07 |
| YES | ImGui_Toggle | CimGui_Toggle | 2025/07 |
| YES | ImSpinner | CImSpinner | 2025/07 |
| YES | ImGuiColorTextEdit | cimCTE | 2025/08 |
| YES | ImGuizmo | CImGuizmo | 2025/08 |
| YES | ImNodes | CImNodes | 2025/08 |
| YES | ImPlot | CImPlot | 2025/08 |
| YES | ImPlot3d | CImPlot3d | 2025/08 |
| YES | imgui_zoomable_image | cimgui_zoomable_image | 2026/04 |
| WIP | ImGui_Markdown | CImGui_MarkDown | - |
| YES | STB | - | |
| YES | Font-Awesome | - |
Additional examples
- Raylib, raylib-zig, rlImGui (2025/11)
git clone https://github.com/dinau/imguinz2
cd imguinz2/examples/zig/glfw_opengl3 # for example
make run # or zig build run --release=fast Use zig-0.16.0
First fetch raylib,
zig fetch --save git+https://github.com/raysan5/raylibraylib_cjk: Showing multi byte(CJK) fonts
-
Work in progress
- Incremantal search
- Magnifing glass
glfw_imPlotDemo written in Zig.
| Language | GLFW | Magnifing glass | Image load /save | Note |
|---|---|---|---|---|
| C | glfw_opengl3 | - | Y | |
| C | glfw_opengl3_image | - | Y | |
| Zig | glfw_opengl3_image_load | Y | Y | |
| Zig | sdl3_sdlgup3 | - | load | Download SDL3.dll on Windows and copy to zig-out/bin folder |
| Zig | sdl3_opengl3 | - | load | Download SDL3.dll on Windows and copy to zig-out/bin folder |
-
Image file captured will be saved in current folder.
-
Image format can be selected from
JPEG / PNG / BMP / TGA.
-
Basic example
Language GLFW SDL3 C glfw_opengl3 / glfw_opengl3_jp sdl3_opengl3 Zig glfw_opengl3 sdl3_opengl3
Try Wasm live demo in your browser
Click link for live demo: Click here
-
Specify emsdk 6.0.92
emsdk install 6.0.9 emsdk activate 6.0.9
for WebGL
embuilder build contrib.glfw3 # Rerun after emsdk updated
-
Go to
examples/wasm/zig_webglfolder -
Run
emsdk_env.bat(Windows) oremsdk_env.sh(Linux) in your console[!IMPORTANT]
emsdk_env.bat # Run this once in every new console -
Build WebGL/Wsam example
make run
See ./Makefile
-
You can build native application too
make app
WebGPU wasm example
Basically same as WebGL example
for WebGPU
embuilder build emdawnwebgpu # Rerun after emsdk updated
emsdk_env.bat # Run this once in every new consolemake run
This example can't build native applicaton.
Use zig-0.17.0
-
Zig fetch
imguinz2mkdir myapp cd myapp zig init zig fetch --save git+https://github.com/dinau/imguinz2 -
Add dependencies to
build.zig
Please insert the following lines aboveb.installArtifact(exe);.const imguinz2 = b.dependency("imguinz2", .{}); const dependencies = .{ "appimgui", // Simple app framework "imspinner", // ImSpinner "imknobs", // ImKnobs "imtoggle", // ImToggle // "another_lib", }; inline for (dependencies) |dep_name| { const dep = imguinz2.builder.dependency(dep_name, .{ .target = target, .optimize = optimize, }); exe.root_module.addImport(dep_name, dep.module(dep_name)); } //exe.subsystem = .windows; // Hide console window
You can set
dependencies(additional libraries), see imguinz2/build.zig.zon"appimgui" <- Simple app framework for GLFW and OpenGL backend "imspinner" <- ImSpinner "imguizmo" <- ImGuizmo "imknobs" <- ImKnobs "imnodes" <- ImNodes "implot" <- ImPlots "implot3d" <- ImPlot3D "imtoggle" <- ImToggle "rlimgui" <- rlImgui ... snip ...
-
Edit src/main.zig
const app = @import("appimgui"); const ig = app.ig; const spinner = @import("imspinner"); // ImSpinner const knobs = @import("imknobs"); // ImKnobs const tgl = @import("imtoggle"); // ImToggle // gui_main() pub fn gui_main(window: *app.Window) void { var col: f32 = 1.0; var fspd: bool = false; var speed: f32 = 2.0; var spn_col: spinner.ImColor = .{ .Value = .{ .x = col, .y = 1.0, .z = 1.0, .w = 1.0 } }; while (!window.shouldClose()) { // main loop window.pollEvents(); window.frame(); // Start ImGui frame ig.ImGui_ShowDemoWindow(null); // Show ImGui demo window ig.ImGui_SetNextWindowSize(.{ .x = 0.0, .y = 0.0 }, 0); // Fit window size depending on the size of the widgets _ = ig.ImGui_Begin("Demo", null, 0); // Show demo window spinner.SpinnerAtomEx("atom", 16, 2, spn_col, speed, 3); ig.ImGui_SameLine(); _ = tgl.Toggle("Speed", &fspd, .{ .x = 0.0, .y = 0.0 }); if (fspd) speed = 6.0 else speed = 2.0; if (knobs.IgKnobFloat("Color", &col, 0.0, 1.0, 0.05, "%.2f", knobs.IgKnobVariant_Stepped, 0, 0, 10, -1, -1)) { spn_col.Value.x = col; } ig.ImGui_End(); window.render(); // render } // end while loop } pub fn main() !void { var window = try app.Window.createImGui(1024, 900, "ImGui window in Zig", .{}); defer window.destroyImGui(); _ = app.setTheme(.dark); // Theme: dark, classic, light, microsoft gui_main(&window); // GUI main proc }
-
Build and run
pwd myapp zig build run # or zig build --release=fast
-
Zig examples
Openbuild.zigin each example folder and enable the option line as follows,... snip ... exe.subsystem = .windows; // Hide console window ... snip ...
and execute
make. -
C examples
OpenMakefilein each example folder and change the option line as follows,... snip ... HIDE_CONSOLE_WINDOW = true ... snip ...and execute
make.
https://github.com/libsdl-org/SDL
https://github.com/libsdl-org/SDL/releases
- make: GNU Make 4.4.1
- Python 3.14.3
| Language | Project | |
|---|---|---|
| Lua | Script | LuaJITImGui |
| NeLua | Compiler | NeLuaImGui / NeLuaImGui2 |
| Nim | Compiler | ImGuin, Nimgl_test, Nim_implot |
| Python | Script | DearPyGui for 32bit WindowsOS Binary |
| Ruby | Script | igRuby_Examples |
| Zig | Compiler | ImGuinz with CImGui |
| Zig, C | Compiler | ImGuinz2 with Dear Binindings |
| Language | SDL | Project | |
|---|---|---|---|
| LuaJIT | Script | SDL2 | LuaJIT-Platformer |
| Nelua | Compiler | SDL2 | NeLua-Platformer |
| Nim | Compiler | SDL3 / SDL2 | Nim-Platformer-sdl2/ Nim-Platformer-sdl3 |
| Ruby | Script | SDL3 | Ruby-Platformer |
| Zig | Compiler | SDL3 / SDL2 | Zig-Platformer |


















