GithubHelp home page GithubHelp logo

imgui.net's Introduction

ImGui.NET

This is a wrapper for the immediate mode GUI library, ImGui (https://github.com/ocornut/imgui). This utilizes the C API, provided by the cimgui project (https://github.com/Extrawurst/cimgui). ImGui.NET lets you build graphical interfaces using a simple immediate-mode style. Included is a basic sample program that shows how to use the library, which renders the ImGui output using OpenGL via OpenTK.

NuGet

alt tag

Building

Currently, you need VS 2015 to build this. You must have the "Visual Studio Tools for Universal Windows App" optional component installed in order to use the new NuGet features (check the VS installer menu to add it), as well as have an up-to-date NuGet plugin (check the VS extension manager). Simply restore all of the NuGet packages (nuget.exe restore or similar) and run msbuild on the project files or solution. Building in VS will automatically restore the NuGet packages as necessary. It is not necessary to build the SampleProgram project unless you wish to test it out.

The cimgui dependencies included in this repository are currently only built for x64 Windows. If you use this library from somewhere else, you will need to recompile the native assemblies for your target platform. The project home pages for the project is linked below, and the project is very easy to build. OpenTK is also included in the repository, using a version of the library ported to .NET Core.

I have tested the current state of the library on x64 Windows 8.1, 10, and Ubuntu 15.04.

Usage

ImGui.NET currently provides a raw, thin wrapper around the ImGui native API, and does not attempt to apply any higher-level abstractions over it. It is currently very much like using the native library, which is very simple, flexible, and robust. The easiest way to figure out how to use the library is to read the documentation of imgui itself, mostly in the imgui.cpp, and imgui.h files, as well as the exported functions in cimgui.h. Looking at the sample program code will also give some indication about basic usage. In the future, I plan to create a more comprehensive C# wrapper with higher-level abstractions and better use of C#/.NET features.

Known Issues

  • There are not wrapper methods for all of the exported native functions from cimgui. All of the functionality is exposed through the ImGuiNative class, but the interface there is very raw and requires unsafe code. Right now I am working to add safe wrappers for each of the native methods, emulating the original optional arguments and allowing you to use strictly-safe code with ImGui.
  • There is not an easy deployment story for different platforms. You need to build the native components yourself on each platform. The included native binary is only for x64 Windows.

See Also

https://github.com/ocornut/imgui

ImGui is a bloat-free graphical user interface library for C++. It outputs vertex buffers that you can render in your 3D-pipeline enabled application. It is portable, renderer agnostic and self-contained (no external dependencies). It is based on an "immediate mode" graphical user interface paradigm which enables you to build user interfaces with ease.

https://github.com/Extrawurst/cimgui

This is a thin c-api wrapper for the excellent C++ intermediate gui imgui. This library is intended as a intermediate layer to be able to use imgui from other languages that can interface with C .

imgui.net's People

Contributors

mellinoe avatar dpethes avatar bennybroseph avatar nasser avatar devsaider avatar

Watchers

Jakub Arnold avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.