|
|
@ -91,7 +91,7 @@ Most the example bindings are split in 2 parts:
|
|
|
|
This is counter-intuitive, but this will get you running faster! Once you better understand how imgui
|
|
|
|
This is counter-intuitive, but this will get you running faster! Once you better understand how imgui
|
|
|
|
works and is bound, you can rewrite the code using your own systems.
|
|
|
|
works and is bound, you can rewrite the code using your own systems.
|
|
|
|
|
|
|
|
|
|
|
|
- Road-map: Dear ImGui 1.70 (WIP currently in the "viewport" branch) will allows imgui windows to be
|
|
|
|
- Road-map: Dear ImGui 1.80 (WIP currently in the "docking" branch) will allows imgui windows to be
|
|
|
|
seamlessly detached from the main application window. This is achieved using an extra layer to the
|
|
|
|
seamlessly detached from the main application window. This is achieved using an extra layer to the
|
|
|
|
platform and renderer bindings, which allows imgui to communicate platform-specific requests.
|
|
|
|
platform and renderer bindings, which allows imgui to communicate platform-specific requests.
|
|
|
|
If you decide to use unmodified imgui_impl_xxxx.cpp files, you will automatically benefit from
|
|
|
|
If you decide to use unmodified imgui_impl_xxxx.cpp files, you will automatically benefit from
|
|
|
@ -101,7 +101,7 @@ Most the example bindings are split in 2 parts:
|
|
|
|
List of Platforms Bindings in this repository:
|
|
|
|
List of Platforms Bindings in this repository:
|
|
|
|
|
|
|
|
|
|
|
|
imgui_impl_glfw.cpp ; GLFW (Windows, macOS, Linux, etc.) http://www.glfw.org/
|
|
|
|
imgui_impl_glfw.cpp ; GLFW (Windows, macOS, Linux, etc.) http://www.glfw.org/
|
|
|
|
imgui_impl_osx.mm ; macOS native API
|
|
|
|
imgui_impl_osx.mm ; macOS native API (not as feature complete as glfw/sdl back-ends)
|
|
|
|
imgui_impl_sdl.cpp ; SDL2 (Windows, macOS, Linux, iOS, Android) https://www.libsdl.org
|
|
|
|
imgui_impl_sdl.cpp ; SDL2 (Windows, macOS, Linux, iOS, Android) https://www.libsdl.org
|
|
|
|
imgui_impl_win32.cpp ; Win32 native API (Windows)
|
|
|
|
imgui_impl_win32.cpp ; Win32 native API (Windows)
|
|
|
|
imgui_impl_glut.cpp ; GLUT/FreeGLUT (not recommended unless really miss the 90's)
|
|
|
|
imgui_impl_glut.cpp ; GLUT/FreeGLUT (not recommended unless really miss the 90's)
|
|
|
@ -122,7 +122,7 @@ List of high-level Frameworks Bindings in this repository: (combine Platform + R
|
|
|
|
imgui_impl_allegro5.cpp
|
|
|
|
imgui_impl_allegro5.cpp
|
|
|
|
imgui_impl_marmalade.cpp
|
|
|
|
imgui_impl_marmalade.cpp
|
|
|
|
|
|
|
|
|
|
|
|
Note that Dear ImGui works with Emscripten.
|
|
|
|
Note that Dear ImGui works with Emscripten.
|
|
|
|
The examples_emscripten/ app uses sdl.cpp + opengl3.cpp but other combinations are possible.
|
|
|
|
The examples_emscripten/ app uses sdl.cpp + opengl3.cpp but other combinations are possible.
|
|
|
|
Third-party framework, graphics API and languages bindings are listed at:
|
|
|
|
Third-party framework, graphics API and languages bindings are listed at:
|
|
|
|
|
|
|
|
|
|
|
@ -151,40 +151,33 @@ Building:
|
|
|
|
directly with a command-line compiler.
|
|
|
|
directly with a command-line compiler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_win32_directx9/
|
|
|
|
example_allegro5/
|
|
|
|
DirectX9 example, Windows only.
|
|
|
|
Allegro 5 example.
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx9.cpp
|
|
|
|
= main.cpp + imgui_impl_allegro5.cpp
|
|
|
|
|
|
|
|
|
|
|
|
example_win32_directx10/
|
|
|
|
|
|
|
|
DirectX10 example, Windows only.
|
|
|
|
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx10.cpp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_win32_directx11/
|
|
|
|
|
|
|
|
DirectX11 example, Windows only.
|
|
|
|
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx11.cpp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_win32_directx12/
|
|
|
|
|
|
|
|
DirectX12 example, Windows only.
|
|
|
|
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx12.cpp
|
|
|
|
|
|
|
|
This is quite long and tedious, because: DirectX12.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_apple_metal/
|
|
|
|
example_apple_metal/
|
|
|
|
OSX & iOS + Metal.
|
|
|
|
OSX & iOS + Metal.
|
|
|
|
= main.m + imgui_impl_osx.mm + imgui_impl_metal.mm
|
|
|
|
= main.m + imgui_impl_osx.mm + imgui_impl_metal.mm
|
|
|
|
It is based on the "cross-platform" game template provided with Xcode as of Xcode 9.
|
|
|
|
It is based on the "cross-platform" game template provided with Xcode as of Xcode 9.
|
|
|
|
(NB: you may still want to use GLFW or SDL which will also support Windows, Linux along with OSX.)
|
|
|
|
(NB: imgui_impl_osx.mm is currently not as feature complete as other platforms back-ends.
|
|
|
|
|
|
|
|
You may prefer to use the GLFW Or SDL back-ends, which will also support Windows and Linux.)
|
|
|
|
|
|
|
|
|
|
|
|
example_apple_opengl2/
|
|
|
|
example_apple_opengl2/
|
|
|
|
OSX + OpenGL2.
|
|
|
|
OSX + OpenGL2.
|
|
|
|
= main.mm + imgui_impl_osx.mm + imgui_impl_opengl2.cpp
|
|
|
|
= main.mm + imgui_impl_osx.mm + imgui_impl_opengl2.cpp
|
|
|
|
(NB: you may still want to use GLFW or SDL which will also support Windows, Linux along with OSX.)
|
|
|
|
(NB: imgui_impl_osx.mm is currently not as feature complete as other platforms back-ends.
|
|
|
|
|
|
|
|
You may prefer to use the GLFW Or SDL back-ends, which will also support Windows and Linux.)
|
|
|
|
|
|
|
|
|
|
|
|
example_empscripten:
|
|
|
|
example_empscripten:
|
|
|
|
Emcripten + SDL2 + OpenGL3+/ES2/ES3 example.
|
|
|
|
Emcripten + SDL2 + OpenGL3+/ES2/ES3 example.
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl3.cpp
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl3.cpp
|
|
|
|
Note that other examples based on SDL or GLFW + GL could easily be modified to work with Emscripten.
|
|
|
|
Note that other examples based on SDL or GLFW + OpenGL could easily be modified to work with Emscripten.
|
|
|
|
We provide this to make the Emscripten differences obvious, and have them not pollute all other examples.
|
|
|
|
We provide this to make the Emscripten differences obvious, and have them not pollute all other examples.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_glfw_metal/
|
|
|
|
|
|
|
|
GLFW (Mac) + Vulkan example.
|
|
|
|
|
|
|
|
= main.mm + imgui_impl_glfw.cpp + imgui_impl_metal.mm.
|
|
|
|
|
|
|
|
|
|
|
|
example_glfw_opengl2/
|
|
|
|
example_glfw_opengl2/
|
|
|
|
GLFW + OpenGL2 example (legacy, fixed pipeline).
|
|
|
|
GLFW + OpenGL2 example (legacy, fixed pipeline).
|
|
|
|
= main.cpp + imgui_impl_glfw.cpp + imgui_impl_opengl2.cpp
|
|
|
|
= main.cpp + imgui_impl_glfw.cpp + imgui_impl_opengl2.cpp
|
|
|
@ -200,12 +193,24 @@ example_glfw_opengl3/
|
|
|
|
= main.cpp + imgui_impl_glfw.cpp + imgui_impl_opengl3.cpp
|
|
|
|
= main.cpp + imgui_impl_glfw.cpp + imgui_impl_opengl3.cpp
|
|
|
|
This uses more modern OpenGL calls and custom shaders.
|
|
|
|
This uses more modern OpenGL calls and custom shaders.
|
|
|
|
Prefer using that if you are using modern OpenGL in your application (anything with shaders).
|
|
|
|
Prefer using that if you are using modern OpenGL in your application (anything with shaders).
|
|
|
|
|
|
|
|
(Please be mindful that accessing OpenGL3+ functions requires a function loader, which are a frequent
|
|
|
|
|
|
|
|
source for confusion for new users. We use a loader in imgui_impl_opengl3.cpp which may be different
|
|
|
|
|
|
|
|
from the one your app normally use. Read imgui_impl_opengl3.h for details and how to change it.)
|
|
|
|
|
|
|
|
|
|
|
|
example_glfw_vulkan/
|
|
|
|
example_glfw_vulkan/
|
|
|
|
GLFW (Win32, Mac, Linux) + Vulkan example.
|
|
|
|
GLFW (Win32, Mac, Linux) + Vulkan example.
|
|
|
|
= main.cpp + imgui_impl_glfw.cpp + imgui_impl_vulkan.cpp
|
|
|
|
= main.cpp + imgui_impl_glfw.cpp + imgui_impl_vulkan.cpp
|
|
|
|
This is quite long and tedious, because: Vulkan.
|
|
|
|
This is quite long and tedious, because: Vulkan.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_glut_opengl2/
|
|
|
|
|
|
|
|
GLUT (e.g., FreeGLUT on Linux/Windows, GLUT framework on OSX) + OpenGL2.
|
|
|
|
|
|
|
|
= main.cpp + imgui_impl_glut.cpp + imgui_impl_opengl2.cpp
|
|
|
|
|
|
|
|
Note that GLUT/FreeGLUT is largely obsolete software, prefer using GLFW or SDL.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_marmalade/
|
|
|
|
|
|
|
|
Marmalade example using IwGx.
|
|
|
|
|
|
|
|
= main.cpp + imgui_impl_marmalade.cpp
|
|
|
|
|
|
|
|
|
|
|
|
example_sdl_opengl2/
|
|
|
|
example_sdl_opengl2/
|
|
|
|
SDL2 (Win32, Mac, Linux etc.) + OpenGL example (legacy, fixed pipeline).
|
|
|
|
SDL2 (Win32, Mac, Linux etc.) + OpenGL example (legacy, fixed pipeline).
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl2.cpp
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl2.cpp
|
|
|
@ -221,20 +226,28 @@ example_sdl_opengl3/
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl3.cpp
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl3.cpp
|
|
|
|
This uses more modern OpenGL calls and custom shaders.
|
|
|
|
This uses more modern OpenGL calls and custom shaders.
|
|
|
|
Prefer using that if you are using modern OpenGL in your application (anything with shaders).
|
|
|
|
Prefer using that if you are using modern OpenGL in your application (anything with shaders).
|
|
|
|
|
|
|
|
(Please be mindful that accessing OpenGL3+ functions requires a function loader, which are a frequent
|
|
|
|
|
|
|
|
source for confusion for new users. We use a loader in imgui_impl_opengl3.cpp which may be different
|
|
|
|
|
|
|
|
from the one your app normally use. Read imgui_impl_opengl3.h for details and how to change it.)
|
|
|
|
|
|
|
|
|
|
|
|
example_sdl_vulkan/
|
|
|
|
example_sdl_vulkan/
|
|
|
|
SDL2 (Win32, Mac, Linux, etc.) + Vulkan example.
|
|
|
|
SDL2 (Win32, Mac, Linux, etc.) + Vulkan example.
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_vulkan.cpp
|
|
|
|
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_vulkan.cpp
|
|
|
|
This is quite long and tedious, because: Vulkan.
|
|
|
|
This is quite long and tedious, because: Vulkan.
|
|
|
|
|
|
|
|
|
|
|
|
example_allegro5/
|
|
|
|
example_win32_directx9/
|
|
|
|
Allegro 5 example.
|
|
|
|
DirectX9 example, Windows only.
|
|
|
|
= main.cpp + imgui_impl_allegro5.cpp
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx9.cpp
|
|
|
|
|
|
|
|
|
|
|
|
example_glut_opengl2/
|
|
|
|
example_win32_directx10/
|
|
|
|
GLUT (e.g., FreeGLUT on Linux/Windows, GLUT framework on OSX) + OpenGL2.
|
|
|
|
DirectX10 example, Windows only.
|
|
|
|
= main.cpp + imgui_impl_glut.cpp + imgui_impl_opengl2.cpp
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx10.cpp
|
|
|
|
|
|
|
|
|
|
|
|
example_marmalade/
|
|
|
|
example_win32_directx11/
|
|
|
|
Marmalade example using IwGx.
|
|
|
|
DirectX11 example, Windows only.
|
|
|
|
= main.cpp + imgui_impl_marmalade.cpp
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx11.cpp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
example_win32_directx12/
|
|
|
|
|
|
|
|
DirectX12 example, Windows only.
|
|
|
|
|
|
|
|
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx12.cpp
|
|
|
|
|
|
|
|
This is quite long and tedious, because: DirectX12.
|
|
|
|