Skip to content

Static & dynamic D bindings to Dear ImGui, compatible with BetterC, @nogc, and nothrow.

License

Notifications You must be signed in to change notification settings

BindBC/bindbc-imgui

Repository files navigation

Note

These bindings are currently being re-written for package version 1.0.0.

The new bindings will be based directly on ImGui (i.e. they're C++ bindings), with support for many more ImGui backends, and including bindings of imgui_internal.h.

To check out an UNSTABLE preview of 1.0.0, you can download this repository and use dub add-local.

BindBC-ImGui

D binding to CImgui with additional OpenGL and SDL backends

Adding to your project

To add bindbc-imgui to your project run

dub add bindbc-imgui

bindbc-imgui will currently build it's own dependencies. We've found that distributing deps for all possible targets too onerous, and so instead now depend on an existing toolchain and tools. That said, we're open to contributions for doing this in a more traditional way across platforms, but we're experiementing with this to make development of inochi-creator (and it's related projects) easier.

Availible Configs

These configs have been developed to ease the use of this project in inochi-creator. Happy to accept PRs for additional configs with alternate goals. But we'd like to avoid (if this works how we're hoping) attempting to distribute binaries within our git source going forward.

static_dynamicCRT

Statically linked cimgui, dynamically linked C/C++ runtime libraries.

static_staticCRT

Statically linked cimgui, statically linked C/C++ runtime libraries.

  • Please note that you may run afoul of licensing issues using this configuration, due to glibc being under the LGPL.

dynamic_dynamicCRT

Dynamically linked cimgui, dynamically linked C/C++ runtime libraries.

dynamic_staticCRT

Dynamically linked cimgui, statically linked C/C++ runtime libraries.

  • Please note that you may run afoul of licensing issues using this configuration, due to glibc being under the LGPL.

Platform Dependencies

Windows

Dependencies

  • Visual Studio 2022 (With "Desktop development with C++" workflow installed)
    • In theory, "Build Tools for Visual Studio 2022" should also work, but is untested.
  • CMake (Currently 3.16 or higher is needed.)
  • Dlang, either dmd or ldc

Linux

Dependencies

  • The equivalent of build-essential on Ubuntu, on centos 7, this was sudo yum groupinstall 'Development Tools', this should get you a working C++ toolchain.
  • Dlang, either dmd or ldc
  • CMake (Currently 3.16 or higher is needed.)
  • SDL2 (developer package)
  • Freetype (developer package)
  • appimagetool (for building an AppImage)

Mac

Notes

  • Currently only the dynamic version of the library works on macOS, you will additionally need MACOSX_DEPLOYMENT_TARGET=11 to avoid pointer alignment linking errors on macOS (for now)
  • Only LDC2 is supported.

Dependencies

  • You will need CMake installed to build this project.
    • You will additionally need to set it up for command line use, see Tools->How to Install For Command Line Use in the CMake GUI

Using backends

To select backends use the versions directive in your dub package file Current backends are: USE_GL, USE_SDL2 (depends on bindbc-sdl) and USE_GLFW (depends on bindbc-glfw).

Running examples

To run the examples go in to the examples directory and compile the example in question.

About

Static & dynamic D bindings to Dear ImGui, compatible with BetterC, @nogc, and nothrow.

Resources

License

Stars

Watchers

Forks

Languages