[Doc] Readme about multi-viewports
This commit is contained in:
1 parent
13c3a28f09
commit
c14d2a33a3
2 files changed
+12
-8
No files matched your search
@@ -6,13 +6,13 @@ JNI based binding for [Dear ImGui](https://github.com/ocornut/imgui) with no dep
|
||||
Please read **Binding Notice** to get more info about java-specific things of the API.<br>
|
||||
See official [documentation](https://github.com/ocornut/imgui#usage) and [wiki](https://github.com/ocornut/imgui/wiki) to get more info about how to do things in Dear ImGui.
|
||||
|
||||
Binding provides all the data you need to render Dear ImGui. If, for some reason, you want to use your own backend renderer, see how [ImGuiImplGl3](https://github.com/SpaiR/imgui-java/blob/v1.77-0.17.2/imgui-lwjgl3/src/main/java/imgui/gl3/ImGuiImplGl3.java) for reference.
|
||||
Binding provides all the data you need to render Dear ImGui. If, for some reason, you want to use your own backend renderer, see [ImGuiImplGl3](https://github.com/SpaiR/imgui-java/blob/v1.77-0.17.2/imgui-lwjgl3/src/main/java/imgui/gl3/ImGuiImplGl3.java) for reference.
|
||||
|
||||
Versioning semantic of the binding: `imguiVersion-bindingVersion`.<br>
|
||||
For example `1.74-0.1` means that imgui-java uses `1.74` version of Dear ImGui and binding itself has the version `0.1`.
|
||||
|
||||
Additional available features:
|
||||
- [Docking API](#using-docking)
|
||||
- [Multi-Viewports/Docking API](#using-multi-viewports-and-docking)
|
||||
- [FreeType font renderer](#using-freetype)
|
||||
|
||||
## How to Try
|
||||
@@ -224,12 +224,14 @@ If you're using native libs directly, you'll need to provide a VM option: `imgui
|
||||
|
||||
**You are ready to use imgui-java binding!**
|
||||
|
||||
## Using Docking
|
||||
## Using Multi-Viewports and Docking
|
||||
Binding based on the Dear ImGui [docking](https://github.com/ocornut/imgui/tree/docking) branch, commit: [90ea7e2f2f3c4096a58b8bd14c274d80ae63e1ce](https://github.com/ocornut/imgui/tree/90ea7e2f2f3c4096a58b8bd14c274d80ae63e1ce).
|
||||
That branch contains two important features: [multi-viewports](https://github.com/ocornut/imgui/issues/1542) and [docking](https://github.com/ocornut/imgui/issues/2109).
|
||||
See an official documentation about how to work with them.
|
||||
|
||||
Even if the viewport feature is still in a very experimental state, yet the docking API seems pretty stable. Thus, imgui-java exposes it and hides everything about viewports.<br>
|
||||
See an official documentation about how to work with [docking](https://github.com/ocornut/imgui/issues/2109).
|
||||
##### Important!
|
||||
Take a note that multi-viewports api is **VERY** complex to implement. It's highly recommended to use `imgui.glfw.ImGuiImplGlfw` class as it's done in the example.
|
||||
Otherwise, if you're using your own backed implementation, there are no guarantees it will work.
|
||||
|
||||
## Using FreeType
|
||||
Dear ImGui by default uses a stb_strutype library to render a fonts atlas. It's possible to use FreeType instead to get better fonts quality. See an example in [ImGuiGlfwExample](https://github.com/spair/imgui-java/blob/v1.77-0.17.2/imgui-lwjgl3/src/test/java/ImGuiGlfwExample.java). [Read more](https://github.com/ocornut/imgui/blob/v1.76/misc/freetype/README.md)
|
||||
|
||||
@@ -146,7 +146,9 @@ public final class ImGuiGlfwExample {
|
||||
final ImGuiIO io = ImGui.getIO();
|
||||
|
||||
io.setIniFilename(null); // We don't want to save .ini file
|
||||
io.addConfigFlags(ImGuiConfigFlags.NavEnableKeyboard | ImGuiConfigFlags.DockingEnable | ImGuiConfigFlags.ViewportsEnable);
|
||||
io.addConfigFlags(ImGuiConfigFlags.NavEnableKeyboard); // Enable Keyboard Controls
|
||||
io.addConfigFlags(ImGuiConfigFlags.DockingEnable); // Enable Docking
|
||||
io.addConfigFlags(ImGuiConfigFlags.ViewportsEnable); // Enable Multi-Viewport / Platform Windows
|
||||
io.setConfigViewportsNoTaskBarIcon(true);
|
||||
|
||||
// ------------------------------------------------------------
|
||||
@@ -189,7 +191,7 @@ public final class ImGuiGlfwExample {
|
||||
ImGuiFreeType.buildFontAtlas(fontAtlas, ImGuiFreeType.RasterizerFlags.LightHinting);
|
||||
|
||||
// When viewports are enabled we tweak WindowRounding/WindowBg so platform windows can look identical to regular ones.
|
||||
if ((io.getConfigFlags() & ImGuiConfigFlags.ViewportsEnable) != 0) {
|
||||
if (io.hasConfigFlags(ImGuiConfigFlags.ViewportsEnable)) {
|
||||
final ImGuiStyle style = ImGui.getStyle();
|
||||
style.setWindowRounding(0.0f);
|
||||
style.setColor(ImGuiCol.WindowBg, ImGui.getColorU32(ImGuiCol.WindowBg, 1));
|
||||
@@ -224,7 +226,7 @@ public final class ImGuiGlfwExample {
|
||||
// At that moment ImGui will be rendered to the current OpenGL context.
|
||||
imGuiGl3.renderDrawData(ImGui.getDrawData());
|
||||
|
||||
if ((ImGui.getIO().getConfigFlags() & ImGuiConfigFlags.ViewportsEnable) != 0) {
|
||||
if (ImGui.getIO().hasConfigFlags(ImGuiConfigFlags.ViewportsEnable)) {
|
||||
final long backupWindowPtr = glfwGetCurrentContext();
|
||||
ImGui.updatePlatformWindows();
|
||||
ImGui.renderPlatformWindowsDefault();
|
||||
|
||||
Reference in new issue
Block a user