- ImGuin
Updated to latest ImGui/CImGui version: : v1.91.6dock (2024/12)
This project is my experiment project to use Nim language, ImGui, ImPlot, futhark and etc.
- Notice
It may be better to use the mainstream project nimgl/imgui (ImGui v1.85)
,updated project nimgl-imgui (ImGui v1.89.9) ,sub project nim_implot and test project nimgl_test.
-
Nim-2.0.12 or later
-
Windows10 or later
-
MSys2/MinGW command line tools (Unix tools), make, cp, rm, git, ...etc
-
Linux Mint 22 (or Ubuntu / Debian families ?)
$ sudo apt install xorg-dev libopengl-dev libgl1-mesa-dev
and for glfw3 and sdl2,
$ sudo apt install libglfw3 libglfw3-dev $ sudo apt install libsdl2-dev
nimble uninstall imguin # Remove old versions if exists.
nimble install https://github.com/dinau/imguin
-
First clone this project,
git clone https://github.com/dinau/imguin
-
Sample program is here, examples. For instance glfw_opengl3.nim,
cd imguin/examples/glfw_opengl3 make # or make run
After build, run
./glfw_opengl3(.exe)
Compiation options depend on./config.nims
and./Makefile
. -
For selecting static link or dynamic link ,read this examples/README.md.
These screen shots are on Windows10.
Basic example with icon fonts
-
Build
pwd examples/glfw_opengl3
make # or make run
or
nim c glfw_opengl3.nim # or nim c -r glfw_opengl3.nim or nim r glfw_opengl3.nim
https://github.com/altschuler/imgui-knobs
cimgui-knobs sources have been contributed from system64MC / PR . Thank you.
-
Build
pwd examples/glfw_opengl3_imknobs
make
or
nim c -d:ImKnobsEnable --warning:HoleEnumConv:off glfw_opengl3_imknobs.nim
Icon font viewer and magnifying glass
-
Build
pwd examples/iconFontViewer
make
or
nim c iconFontViewer.nim
Image load and magnifying glass
-
Build
pwd examples/glfw_opengl3_image_load
make
or
nim c glfw_opengl3_image_load.nim
-
Build sdl2 version
pwd examples/sdl2_opengl3
make
or
nim c -d:SDL sdl2_opengl3.nim
Image load / save and magnifying glass
It can save a screen shot as jpg, bmp, png or tga file.
-
Build
pwd examples/glfw_opengl3_image_save
make # or make run
or
nim c glfw_opengl3_image_save.nim
Showing UTF-8 text and input text with a local country language.
-
Build
pwd examples/glfw_opengl3_jp
make # or make run
or
nim c glfw_opengl3_jp.nim
Showing ImGui demo with ImPlot demo.
-
Build
pwd examples/glfw_opengl3_implot
make # or make run
or
nim c -d:ImPlotEnable glfw_opengl3_implot.nim
-
Build
pwd examples/glfw_opengl3_imnodes
make # or make run
or
nim c -d:ImNodesEnable glfw_opengl3_imnodes.nim
-
Build
pwd examples/glfw_opengl3_imguizmo
make # or make run
or
nim c -d:ImGuizmoEnable glfw_opengl3_imguizmo.nim
See:
Cross compilation to Windows, linker error (unrecognized option '-z'
https://nim-lang.org/docs/nimc.html#crossminuscompilation-for-windows
For example on Linux Mint 22 and so on,
pwd
examples
cd glfw_opengl3
make win
or
nim c -d:mingw glfw_opengl3
or
nim c --os:windows glfw_opengl3
glfw_opengl3.exe
will be generated in the current folder.
-
Git installed.
-
Installed MSys2/MinGW command line tools (Unix tools), make, cp, rm, ...etc
-
Windows10 or later Clang/LLVM refer to Futhark installation.
nimble install futhark
It must exist
libclang.a
file in the library path (e.g. inc:\llvm\lib
). -
Linux Debian 12 Bookworm
sudo apt install clang-16 nimble install --passL:"-L/usr/lib/llvm-16/lib" futhark
Important Notice: Confirm Futhark version is v0.13.6 at this time. (2024/09)
nimble dump futhark
name: "futhark"
version: "0.13.6"
author: "PMunch"
desc: "A package which uses libclang to parse C headers into Nim files for easy interop"
license: "MIT"
...
-
Compose development folders
First move to your working folder you like, thenmkdir imguin_dev cd imguin_dev git clone https://github.com/dinau/imguin cd imguin
-
Clone ImGui/CImGui etc. sources at once forever
pwd imguin make clonelibs
Cloned libraries are under
../libs/
folder -
Recursively update the sources using git
Pull
orfetch
command in the each library folder,
../libs/cimgui
../libs/cimguizmo
../libs/cimnodes
../libs/cimplot -
Checkout arbitrary version with git command in the respective folder
-
Specify your
Clang
include path toClangIncludePath
inimguin/src/imguin/cimgui.nim
. -
Generate the definition file uisng Futhark,
pwd imguin make gen
-
Install updated files
Properly edit the version info etc inimguin.nimble
file, thenpwd imguin nimble uninstall imguin # Remove old versions if it exists. nimble install
That's all.
Repeat from3.
if you'd like to update or downgrade to other version.
-
Confirmed version
ImGui/CImGui Ver. ImGuin Ver. Date WindowsOS Linux Mint 22 Debian
Bookworm (1)1.91.6dock 1.91.6.0 2024/12 OK OK - 1.91.5dock - - - - - 1.91.4dock 1.91.4.2 2024/12 OK OK - 1.91.3dock 1.91.3.1 2024/10 OK (7) - 1.91.2dock 1.91.2.0 2024/10 OK (7) - 1.91.1dock 1.91.1.2 2024/09 OK (6) - 1.91.0dock 1.91.0.0 2024/08 OK - (7) 1.90.4dock 1.90.4.2 2024/02 OK - OK (4) 1.90.1dock 1.90.1.0 2024/01 OK - NG/OK(1)(3)(4) 1.89.9dock 1.89.9.8 2023/12 OK - NG/OK(1)(3)(4) (1): Except imnodes and SDL2 example.
(2): Doesn't work well.
(3): Works well only if it is compiled debug mode.
(4): Use nim-2.0.2
(5): I don't know why can't be compiled on Linux.
(6): OK: Except ImNodes example
(7): Not checked at this moment.
You might be able to use another C/C++ compiler,
Clang, vcc(Visual Studio C/C++) , zig cc
by changing variable TC
in examples/config.nims.common.
Whether can it useClosed. Only be static link.cimgui.dll
? (Now it can only be static link)Easier compilation for SDL2 app. (2024/09) Done.Added: ImNodes/CImNodes(2023/10) DoneUnfortunately ImGui 1.89.7 dosn't work well at this moment.(2023/07)Done. (2023/08)Whether can it doDone (2023/09) (#Issue 13)nimble install imguin
?Add Font Awesome (Icon Font) demo.Done (2023/04).Can it compile with MSVC (--cc:vcc) ?Done. Except SDL2 demo. (2023/03), TODO (2024/09)Can it compile with Clang (--cc:clang) ?Done. (2023/03)Add SDL2 example.Done. examples/sdl2_opengl3 (2023/03)
- First step is done. (2023/03)
Install UPX
with MSys console on WindowsOS,
pacman -S mingw-w64-x86_64-upx
For compression exe file,
pwd
examples
cd glfw_opengl3_implot
make upx
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2024
UPX 4.2.4 Markus Oberhumer, Laszlo Molnar & John Reiser May 9th 2024
File size Ratio Format Name
-------------------- ------ ----------- -----------
7117824 -> 1217024 17.10% win64/pe glfw_opengl3_implot.exe
Decompressing,
make dupx
Result in,
GCC + UPX : GCC | Clang + UPX : Clang | MSVC(vcc) + UPX : MSVC | |
---|---|---|---|
glfw_opengl3.exe | 804 KB : 2360 KB | 720 KB : 2200 KB | 742 KB : 2070 KB |
glfw_opengl3_implot.exe | 1220 KB : 7120 KB | 940KB : 4200 KB | 945 KB : 3810 KB |
GCC: v14.2.0, Clang: v18.1.8, MSVC: 2022
Windows11 (main)
-
Nim Compiler Version 2.2.0
-
GCC (Rev1, Built by MSYS2 project) 14.2.0
pacman -S mingw-w64-ucrt-x86_64-gcc
-
Clang version 19.1.4
pacman -S mingw-w64-ucrt-x86_64-clang
-
Visual Studio C++/C 2022
-
git version 2.46.0.windows.1
-
SDL2.dll: 2.30.7
-
Make: GNU Make 4.4.1
-
MSys2/MinGW tools
Linux Mint 22
- Nim Compiler Version 2.2.0
- gcc 13.2.0
- SDL2: 2.30.0
- make: GNU Make 4.3
- git version 2.43.0
-
File Dialog
-
Other
-
GUI
-
Graphical
Language | Project | |
---|---|---|
Nim | Compiler | ImGuin, Nimgl_test, Nim_implot |
Lua | Script | LuaJITImGui |
Zig, C lang. | Compiler | Dear_Bindings_Build |
Zig | Compiler | ImGuinZ |
NeLua | Compiler | NeLuaImGui |
Python | Script | DearPyGui for 32bit WindowsOS Binary |
Language | Project | |
---|---|---|
Nim | Compiler | Nim-Platformer/ sdl3_nim |
LuaJIT | Script | LuaJIT-Platformer |
Nelua | Compiler | NeLua-Platformer |
Zig | Compiler | Zig-Platformer |
- https://github.com/SpartanJ/SOIL2
SOIL2 is a tiny C library used primarily for uploading textures into OpenGL.