A thin, auto-generated C API wrapper for Dear ImGui, enabling its use from other programming languages via C bindings.
cimgui is a thin, auto-generated C API wrapper for Dear ImGui, a C++ immediate mode graphical user interface library. It translates Dear ImGui's C++ API into a C-compatible interface, solving the problem of using Dear ImGui from programming languages that only support C foreign function interfaces (FFI).
Developers creating language bindings for Dear ImGui in languages like D, Lua, Rust, .NET, Julia, or any other language with C interoperability.
Developers choose cimgui because it is automatically generated, ensuring it stays up-to-date with Dear ImGui releases, and it provides a consistent, minimal C layer that simplifies binding creation without manual wrapping efforts.
c-api for imgui (https://github.com/ocornut/imgui) Look at: https://github.com/cimgui for other widgets
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All functions from imgui.h are programmatically wrapped, ensuring compatibility and easy updates with Dear ImGui, as the README states it reduces manual effort and keeps pace with changes.
Provides cimgui.h and cimgui.cpp for C compilation, enabling use from any language with C foreign function interface support, which broadens Dear ImGui's reach to ecosystems like Lua or .NET.
Includes generated files like definitions.lua and structs_and_enums.lua, which assist in creating language bindings, as evidenced by the list of example bindings for LuaJIT, .NET, and Rust.
Offers examples with SDL2, GLFW, OpenGL3, and Vulkan in the backend_test folder, facilitating integration with various graphics APIs and reducing initial setup time.
Setting up the generator requires LuaJIT, a C++ compiler, and manual script editing, as described in the README, which can be cumbersome for custom Dear ImGui versions or one-off projects.
It only wraps Dear ImGui's API, so any missing features or issues in Dear ImGui are inherited, and it doesn't provide higher-level abstractions or additional functionality beyond the C++ library.
Using backends involves additional configuration and might not be seamless, requiring reference to external projects or examples, as noted in the README's pointers to LuaJIT-ImGui for backend details.