Those are standalone ready-to-build applications to demonstrate ImGui.
Binaries of those demos are available from the main GitHub page.

ImGui is highly portable and only requires a few things to run:
 - Providing mouse/keyboard inputs
 - Load the font atlas texture into GPU memory
 - Providing a render function to process the drawing commands (we rendere indexed textured triangles)
 - Extra just as clipboard support, mouse cursor supports, Windows IME support.
So this is essentially what those examples are doing + the obligatory cruft for portability.

Unfortunately in 2015 it is still a massive pain to create and maintain portable build files using
external library like the ones used here. 
I choose to provide Visual Studio 10 .sln files and Makefile for Linux/OSX. 
Please let me know if they don't work with your setup!
You can probably just import the imgui_impl_xxx.cpp/.h files into your own codebase or compile those
directly with a command-line compiler.

opengl_example/
    OpenGL example, using GLFW + fixed pipeline.
    This is simple and should work for all OpenGL enabled applications.
    Prefer following this example to learn how ImGui works!

opengl3_example/
    OpenGL example, using GLFW/GL3W + programmable pipeline.
    This uses more modern OpenGL calls and custom shaders.
	Even if your application is using modern OpenGL you are better off copying the code from the fixed pipeline version!
    I don't think there is an advantage using this over the simpler example, but it is provided for reference.

directx9_example/
    DirectX9 example, Windows only.
	
directx11_example/
    DirectX11 example, Windows only.
    This is quite long and tedious, because: DirectX11.
	
ios_example/
    iOS example.
    Using Synergy to access keyboard/mouse data from server computer. Synergy keyboard integration is rather hacky.

sdl_opengl_example/
    SDL2 + OpenGL example.

allegro5_example/
    Allegro 5 example.
