|
@@ -40,7 +40,7 @@ DOCUMENTATION
|
|
|
- READ FIRST
|
|
|
- HOW TO UPDATE TO A NEWER VERSION OF DEAR IMGUI
|
|
|
- GETTING STARTED WITH INTEGRATING DEAR IMGUI IN YOUR CODE/ENGINE
|
|
|
- - HOW A SIMPLE APPLICATION MAY LOOK LIKE (2 variations)
|
|
|
+ - HOW A SIMPLE APPLICATION MAY LOOK LIKE
|
|
|
- HOW A SIMPLE RENDERING FUNCTION MAY LOOK LIKE
|
|
|
- USING GAMEPAD/KEYBOARD NAVIGATION CONTROLS
|
|
|
- API BREAKING CHANGES (read me when you update!)
|
|
@@ -139,7 +139,7 @@ CODE
|
|
|
- Call and read ImGui::ShowDemoWindow() for demo code demonstrating most features.
|
|
|
- The library is designed to be built from sources. Avoid pre-compiled binaries and packaged versions. See imconfig.h to configure your build.
|
|
|
- Dear ImGui is an implementation of the IMGUI paradigm (immediate-mode graphical user interface, a term coined by Casey Muratori).
|
|
|
- You can learn about IMGUI principles at http://www.johno.se/book/imgui.html, http://mollyrocket.com/861 & more links docs/README.md.
|
|
|
+ You can learn about IMGUI principles at http://www.johno.se/book/imgui.html, http://mollyrocket.com/861 & more links in the FAQ.
|
|
|
- Dear ImGui is a "single pass" rasterizing implementation of the IMGUI paradigm, aimed at ease of use and high-performances.
|
|
|
For every application frame your UI code will be called only once. This is in contrast to e.g. Unity's own implementation of an IMGUI,
|
|
|
where the UI code is called multiple times ("multiple passes") from a single entry point. There are pros and cons to both approaches.
|
|
@@ -153,6 +153,7 @@ CODE
|
|
|
However, imgui_internal.h can optionally export math operators for ImVec2/ImVec4, which we use in this codebase.
|
|
|
- C++: pay attention that ImVector<> manipulates plain-old-data and does not honor construction/destruction (avoid using it in your code!).
|
|
|
|
|
|
+
|
|
|
HOW TO UPDATE TO A NEWER VERSION OF DEAR IMGUI
|
|
|
----------------------------------------------
|
|
|
- Overwrite all the sources files except for imconfig.h (if you have made modification to your copy of imconfig.h)
|
|
@@ -163,6 +164,7 @@ CODE
|
|
|
likely be a comment about it. Please report any issue to the GitHub page!
|
|
|
- Try to keep your copy of dear imgui reasonably up to date.
|
|
|
|
|
|
+
|
|
|
GETTING STARTED WITH INTEGRATING DEAR IMGUI IN YOUR CODE/ENGINE
|
|
|
---------------------------------------------------------------
|
|
|
- Run and study the examples and demo in imgui_demo.cpp to get acquainted with the library.
|
|
@@ -177,9 +179,11 @@ CODE
|
|
|
- Refer to the bindings and demo applications in the examples/ folder for instruction on how to setup your code.
|
|
|
- If you are running over a standard OS with a common graphics API, you should be able to use unmodified imgui_impl_*** files from the examples/ folder.
|
|
|
|
|
|
+
|
|
|
HOW A SIMPLE APPLICATION MAY LOOK LIKE
|
|
|
--------------------------------------
|
|
|
- EXHIBIT 1: USING THE EXAMPLE BINDINGS (imgui_impl_XXX.cpp files from the examples/ folder).
|
|
|
+ EXHIBIT 1: USING THE EXAMPLE BINDINGS (= imgui_impl_XXX.cpp files from the examples/ folder).
|
|
|
+ The sub-folders in examples/ contains examples applications following this structure.
|
|
|
|
|
|
// Application init: create a dear imgui context, setup some options, load fonts
|
|
|
ImGui::CreateContext();
|
|
@@ -268,8 +272,15 @@ CODE
|
|
|
// Shutdown
|
|
|
ImGui::DestroyContext();
|
|
|
|
|
|
+ To decide whether to dispatch mouse/keyboard inputs to Dear ImGui to the rest your application,
|
|
|
+ you should read the 'io.WantCaptureMouse', 'io.WantCaptureKeyboard' and 'io.WantTextInput' flags!
|
|
|
+ Please read the FAQ and example applications for details about this!
|
|
|
+
|
|
|
+
|
|
|
HOW A SIMPLE RENDERING FUNCTION MAY LOOK LIKE
|
|
|
---------------------------------------------
|
|
|
+ The bindings in impl_impl_XXX.cpp files contains many working implementations of a rendering function.
|
|
|
+
|
|
|
void void MyImGuiRenderFunction(ImDrawData* draw_data)
|
|
|
{
|
|
|
// TODO: Setup render state: alpha-blending enabled, no face culling, no depth testing, scissor enabled
|
|
@@ -314,11 +325,6 @@ CODE
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- - The examples/ folders contains many actual implementation of the pseudo-codes above.
|
|
|
- - When calling NewFrame(), the 'io.WantCaptureMouse', 'io.WantCaptureKeyboard' and 'io.WantTextInput' flags are updated.
|
|
|
- They tell you if Dear ImGui intends to use your inputs. When a flag is set you want to hide the corresponding inputs from the
|
|
|
- rest of your application. In every cases you need to pass on the inputs to Dear ImGui.
|
|
|
- - Refer to the FAQ for more information. Amusingly, it is called a FAQ because people frequently run into the same issues!
|
|
|
|
|
|
USING GAMEPAD/KEYBOARD NAVIGATION CONTROLS
|
|
|
------------------------------------------
|
|
@@ -3797,7 +3803,7 @@ void ImGui::NewFrame()
|
|
|
for (int i = 0; i < IM_ARRAYSIZE(g.IO.KeysDown); i++)
|
|
|
g.IO.KeysDownDuration[i] = g.IO.KeysDown[i] ? (g.IO.KeysDownDuration[i] < 0.0f ? 0.0f : g.IO.KeysDownDuration[i] + g.IO.DeltaTime) : -1.0f;
|
|
|
|
|
|
- // Update gamepad/keyboard directional navigation
|
|
|
+ // Update gamepad/keyboard navigation
|
|
|
NavUpdate();
|
|
|
|
|
|
// Update mouse input state
|
|
@@ -7982,7 +7988,7 @@ static void inline NavClampRectToVisibleAreaForMoveDir(ImGuiDir move_dir, ImRect
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// Scoring function for directional navigation. Based on https://gist.github.com/rygorous/6981057
|
|
|
+// Scoring function for gamepad/keyboard directional navigation. Based on https://gist.github.com/rygorous/6981057
|
|
|
static bool ImGui::NavScoreItem(ImGuiNavMoveResult* result, ImRect cand)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|