BACKENDS.md (imgui-1.86) | : | BACKENDS.md (imgui-1.87) | ||
---|---|---|---|---|
skipping to change at line 12 | skipping to change at line 12 | |||
## Dear ImGui: Backends | ## Dear ImGui: Backends | |||
**The backends/ folder contains backends for popular platforms/graphics API, whi ch you can use in | **The backends/ folder contains backends for popular platforms/graphics API, whi ch you can use in | |||
your application or engine to easily integrate Dear ImGui.** Each backend is typ ically self-contained in a pair of files: imgui_impl_XXXX.cpp + imgui_impl_XXXX. h. | your application or engine to easily integrate Dear ImGui.** Each backend is typ ically self-contained in a pair of files: imgui_impl_XXXX.cpp + imgui_impl_XXXX. h. | |||
- The 'Platform' backends are in charge of: mouse/keyboard/gamepad inputs, curso r shape, timing, windowing.<BR> | - The 'Platform' backends are in charge of: mouse/keyboard/gamepad inputs, curso r shape, timing, windowing.<BR> | |||
e.g. Windows ([imgui_impl_win32.cpp](https://github.com/ocornut/imgui/blob/mas ter/backends/imgui_impl_win32.cpp)), GLFW ([imgui_impl_glfw.cpp](https://github. com/ocornut/imgui/blob/master/backends/imgui_impl_glfw.cpp)), SDL2 ([imgui_impl_ sdl.cpp](https://github.com/ocornut/imgui/blob/master/backends/imgui_impl_sdl.cp p)), etc. | e.g. Windows ([imgui_impl_win32.cpp](https://github.com/ocornut/imgui/blob/mas ter/backends/imgui_impl_win32.cpp)), GLFW ([imgui_impl_glfw.cpp](https://github. com/ocornut/imgui/blob/master/backends/imgui_impl_glfw.cpp)), SDL2 ([imgui_impl_ sdl.cpp](https://github.com/ocornut/imgui/blob/master/backends/imgui_impl_sdl.cp p)), etc. | |||
- The 'Renderer' backends are in charge of: creating atlas texture, rendering im gui draw data.<BR> | - The 'Renderer' backends are in charge of: creating atlas texture, rendering im gui draw data.<BR> | |||
e.g. DirectX11 ([imgui_impl_dx11.cpp](https://github.com/ocornut/imgui/blob/ma ster/backends/imgui_impl_dx11.cpp)), OpenGL/WebGL ([imgui_impl_opengl3.cpp](http s://github.com/ocornut/imgui/blob/master/backends/imgui_impl_opengl3.cpp), Vulka n ([imgui_impl_vulkan.cpp](https://github.com/ocornut/imgui/blob/master/backends /imgui_impl_vulkan.cpp), etc. | e.g. DirectX11 ([imgui_impl_dx11.cpp](https://github.com/ocornut/imgui/blob/ma ster/backends/imgui_impl_dx11.cpp)), OpenGL/WebGL ([imgui_impl_opengl3.cpp](http s://github.com/ocornut/imgui/blob/master/backends/imgui_impl_opengl3.cpp)), Vulk an ([imgui_impl_vulkan.cpp](https://github.com/ocornut/imgui/blob/master/backend s/imgui_impl_vulkan.cpp)), etc. | |||
- For some high-level frameworks, a single backend usually handle both 'Platform ' and 'Renderer' parts.<BR> | - For some high-level frameworks, a single backend usually handle both 'Platform ' and 'Renderer' parts.<BR> | |||
e.g. Allegro 5 ([imgui_impl_allegro5.cpp](https://github.com/ocornut/imgui/blo b/master/backends/imgui_impl_allegro5.cpp)). If you end up creating a custom bac kend for your engine, you may want to do the same. | e.g. Allegro 5 ([imgui_impl_allegro5.cpp](https://github.com/ocornut/imgui/blo b/master/backends/imgui_impl_allegro5.cpp)). If you end up creating a custom bac kend for your engine, you may want to do the same. | |||
An application usually combines 1 Platform backend + 1 Renderer backend + main D ear ImGui sources. | An application usually combines 1 Platform backend + 1 Renderer backend + main D ear ImGui sources. | |||
For example, the [example_win32_directx11](https://github.com/ocornut/imgui/tree /master/examples/example_win32_directx11) application combines imgui_impl_win32. cpp + imgui_impl_dx11.cpp. There are 20+ examples in the [examples/](https://git hub.com/ocornut/imgui/blob/master/examples/) folder. See [EXAMPLES.MD](https://g ithub.com/ocornut/imgui/blob/master/docs/EXAMPLES.md) for details. | For example, the [example_win32_directx11](https://github.com/ocornut/imgui/tree /master/examples/example_win32_directx11) application combines imgui_impl_win32. cpp + imgui_impl_dx11.cpp. There are 20+ examples in the [examples/](https://git hub.com/ocornut/imgui/blob/master/examples/) folder. See [EXAMPLES.MD](https://g ithub.com/ocornut/imgui/blob/master/docs/EXAMPLES.md) for details. | |||
**Once Dear ImGui is setup and running, run and refer to `ImGui::ShowDemoWindow( )` in imgui_demo.cpp for usage of the end-user API.** | **Once Dear ImGui is setup and running, run and refer to `ImGui::ShowDemoWindow( )` in imgui_demo.cpp for usage of the end-user API.** | |||
### What are backends | ### What are backends | |||
skipping to change at line 40 | skipping to change at line 40 | |||
Extra features are opt-in, our backends try to support as many as possible: | Extra features are opt-in, our backends try to support as many as possible: | |||
- Optional: custom texture binding support. | - Optional: custom texture binding support. | |||
- Optional: clipboard support. | - Optional: clipboard support. | |||
- Optional: gamepad support. | - Optional: gamepad support. | |||
- Optional: mouse cursor shape support. | - Optional: mouse cursor shape support. | |||
- Optional: IME support. | - Optional: IME support. | |||
- Optional: multi-viewports support. | - Optional: multi-viewports support. | |||
etc. | etc. | |||
This is essentially what each backends are doing + obligatory portability cruft. Using default backends ensure you can get all those features including the ones that would be harder to implement on your side (e.g. multi-viewports support). | This is essentially what each backend is doing + obligatory portability cruft. U sing default backends ensure you can get all those features including the ones t hat would be harder to implement on your side (e.g. multi-viewports support). | |||
It is important to understand the difference between the core Dear ImGui library (files in the root folder) | It is important to understand the difference between the core Dear ImGui library (files in the root folder) | |||
and backends which we are describing here (backends/ folder). | and backends which we are describing here (backends/ folder). | |||
- Some issues may only be backend or platform specific. | - Some issues may only be backend or platform specific. | |||
- You should be able to write backends for pretty much any platform and any 3D g raphics API. | - You should be able to write backends for pretty much any platform and any 3D g raphics API. | |||
e.g. you can get creative and use software rendering or render remotely on a d ifferent machine. | e.g. you can get creative and use software rendering or render remotely on a d ifferent machine. | |||
### Integrating a backend | ### Integrating a backend | |||
skipping to change at line 88 | skipping to change at line 88 | |||
List of high-level Frameworks Backends (combining Platform + Renderer): | List of high-level Frameworks Backends (combining Platform + Renderer): | |||
imgui_impl_allegro5.cpp | imgui_impl_allegro5.cpp | |||
Emscripten is also supported. | Emscripten is also supported. | |||
The [example_emscripten_opengl3](https://github.com/ocornut/imgui/tree/master/ex amples/example_emscripten_opengl3) app uses imgui_impl_sdl.cpp + imgui_impl_open gl3.cpp, but other combos are possible. | The [example_emscripten_opengl3](https://github.com/ocornut/imgui/tree/master/ex amples/example_emscripten_opengl3) app uses imgui_impl_sdl.cpp + imgui_impl_open gl3.cpp, but other combos are possible. | |||
### Backends for third-party frameworks, graphics API or other languages | ### Backends for third-party frameworks, graphics API or other languages | |||
See https://github.com/ocornut/imgui/wiki/Bindings for the full list (e.g. Adven ture Game Studio, Cinder, Cocos2d-x, Game Maker Studio2, Godot, LÖVE+LUA, Magnum , Monogame, Ogre, openFrameworks, OpenSceneGraph, SFML, Sokol, Unity, Unreal Eng ine and many others). | See https://github.com/ocornut/imgui/wiki/Bindings for the full list (e.g. Adven ture Game Studio, Cinder, Cocos2d-x, Game Maker Studio2, Godot, LÖVE+LUA, Magnum , Monogame, Ogre, openFrameworks, OpenSceneGraph, SFML, Sokol, Unity, Unreal Eng ine and many others). | |||
### Recommended Backends | ### Recommended Backends | |||
If you are not sure which backend to use, the recommended platform/frameworks fo r portable applications: | If you are not sure which backend to use, the recommended platform/frameworks fo r portable applications: | |||
|Library |Website |Backend |Note | | |Library |Website |Backend |Note | | |||
|--------|--------|--------|-----| | |--------|--------|--------|-----| | |||
| GLFW | https://github.com/glfw/glfw | imgui_impl_glfw.cpp | | | | GLFW | https://github.com/glfw/glfw | imgui_impl_glfw.cpp | | | |||
| SDL2 | https://www.libsdl.org | imgui_impl_sdl.cpp | | | | SDL2 | https://www.libsdl.org | imgui_impl_sdl.cpp | | | |||
| Sokol | https://github.com/floooh/sokol | [util/sokol_imgui.h](https://github. com/floooh/sokol/blob/master/util/sokol_imgui.h) | Lower-level than GLFW/SDL | | | Sokol | https://github.com/floooh/sokol | [util/sokol_imgui.h](https://github. com/floooh/sokol/blob/master/util/sokol_imgui.h) | Lower-level than GLFW/SDL | | |||
End of changes. 3 change blocks. | ||||
3 lines changed or deleted | 3 lines changed or added |