From 6c196cf4324cd1bba483031373af425fed4af25a Mon Sep 17 00:00:00 2001 From: omar Date: Mon, 6 May 2019 10:02:59 +0200 Subject: [PATCH] Examples Readme and Changelog tweaks, added #2527, re-ordered examples/README alphabetically. --- docs/CHANGELOG.txt | 14 ++--- examples/README.txt | 75 +++++++++++++++----------- examples/example_glut_opengl2/main.cpp | 1 + examples/imgui_impl_glut.cpp | 1 + examples/imgui_impl_glut.h | 1 + imgui.cpp | 2 +- 6 files changed, 56 insertions(+), 38 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 514c5d3cf..1e4d8a232 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -34,8 +34,9 @@ HOW TO UPDATE? ----------------------------------------------------------------------- Breaking Changes: -- ImDrawList: Fixed rectangles with thick lines (>1.0f) not being as thick as requested. (#2518) - If you have custom rendering using thick lines, they will appear thicker now. +- ImDrawList: Improved algorithm for mitre joints on thick lines, preserving correct thickness + up to 90 degrees angles (e.g. rectangles). If you have custom rendering using thick lines, + they will appear a little thicker now. (#2518) [@rmitton] - Obsoleted GetContentRegionAvailWidth(), use GetContentRegionAvail().x instead. Kept inline redirection function. - Examples: Vulkan: Added MinImageCount/ImageCount fields in ImGui_ImplVulkan_InitInfo, required @@ -50,8 +51,8 @@ Other Changes: Examples: Added support for ImDrawCallback_ResetRenderState in all renderer back-ends. Each renderer code setting up initial render state has been moved to a function so it could be called at the start of rendering and when a ResetRenderState is requested. [@ocornut, @bear24rw] -- InputText: Fixed selection background starts rendering one frame after the cursor movement - when first transitioning from no-selection to has-selection. (Bug in 1.69) (#2436) [@Nazg-Gul] +- InputText: Fixed selection background rendering one frame after the cursor movement when + first transitioning from no-selection to has-selection. (Bug in 1.69) (#2436) [@Nazg-Gul] - InputText: Work-around for buggy standard libraries where isprint('\t') returns true. (#2467, #1336) - InputText: Fixed ImGuiInputTextFlags_AllowTabInput leading to two tabs characters being inserted if the back-end provided both Key and Character input. (#2467, #1336) @@ -68,7 +69,7 @@ Other Changes: highlight from parent menu items earlier than necessary while approaching the child menu. - Window: Close button is horizontally aligned with style.FramePadding.x. - Window: Fixed contents region being off by WindowBorderSize amount on the right when scrollbar is active. -- Window: Fixed SetNextWindowSizeConstraints() with non-rounded positions making windows drift. (#2067, 2530) +- Window: Fixed SetNextWindowSizeConstraints() with non-rounded positions making windows drift. (#2067, #2530) - Popups: Closing a popup restores the focused/nav window in place at the time of the popup opening, instead of restoring the window that was in the window stack at the time of the OpenPopup call. (#2517) Among other things, this allows opening a popup while no window are focused, and pressing Escape to @@ -97,8 +98,9 @@ Other Changes: - Demo: Improved trees in columns demo. - Examples: OpenGL: Added a dummy GL call + comments in ImGui_ImplOpenGL3_Init() to detect uninitialized GL function loaders early, and help users understand what they are missing. (#2421) -- Examples: Emscripten: Added Emscripten+SDL+GLES2 example. (#2494, #2492, #2351, #336) [@nicolasnoble, @redblobgames] - Examples: SDL: Added support for SDL_GameController gamepads (enable with ImGuiConfigFlags_NavEnableGamepad). (#2509) [@DJLink] +- Examples: Emscripten: Added Emscripten+SDL+GLES2 example. (#2494, #2492, #2351, #336) [@nicolasnoble, @redblobgames] +- Examples: Metal: Added Glfw+Metal example. (#2527) [@bear24rw] - Examples: OpenGL3: Minor tweaks + not calling glBindBuffer more than necessary in the render loop. - Examples: Vulkan: Fixed in-flight buffers issues when using multi-viewports. (#2461, #2348, #2378, #2097) - Examples: Vulkan: Added missing support for 32-bit indices (#define ImDrawIdx unsigned int). diff --git a/examples/README.txt b/examples/README.txt index cd60733cc..6a34c0763 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -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 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 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 @@ -101,7 +101,7 @@ Most the example bindings are split in 2 parts: List of Platforms Bindings in this repository: 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_win32.cpp ; Win32 native API (Windows) 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_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. Third-party framework, graphics API and languages bindings are listed at: @@ -151,40 +151,33 @@ Building: directly with a command-line compiler. -example_win32_directx9/ - DirectX9 example, Windows only. - = main.cpp + imgui_impl_win32.cpp + imgui_impl_dx9.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_allegro5/ + Allegro 5 example. + = main.cpp + imgui_impl_allegro5.cpp example_apple_metal/ OSX & iOS + Metal. = 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. - (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/ OSX + OpenGL2. = 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: Emcripten + SDL2 + OpenGL3+/ES2/ES3 example. = 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. +example_glfw_metal/ + GLFW (Mac) + Vulkan example. + = main.mm + imgui_impl_glfw.cpp + imgui_impl_metal.mm. + example_glfw_opengl2/ GLFW + OpenGL2 example (legacy, fixed pipeline). = 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 This uses more modern OpenGL calls and custom 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/ GLFW (Win32, Mac, Linux) + Vulkan example. = main.cpp + imgui_impl_glfw.cpp + imgui_impl_vulkan.cpp 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/ SDL2 (Win32, Mac, Linux etc.) + OpenGL example (legacy, fixed pipeline). = 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 This uses more modern OpenGL calls and custom 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/ SDL2 (Win32, Mac, Linux, etc.) + Vulkan example. = main.cpp + imgui_impl_sdl.cpp + imgui_impl_vulkan.cpp This is quite long and tedious, because: Vulkan. -example_allegro5/ - Allegro 5 example. - = main.cpp + imgui_impl_allegro5.cpp +example_win32_directx9/ + DirectX9 example, Windows only. + = main.cpp + imgui_impl_win32.cpp + imgui_impl_dx9.cpp -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 +example_win32_directx10/ + DirectX10 example, Windows only. + = main.cpp + imgui_impl_win32.cpp + imgui_impl_dx10.cpp -example_marmalade/ - Marmalade example using IwGx. - = main.cpp + imgui_impl_marmalade.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. diff --git a/examples/example_glut_opengl2/main.cpp b/examples/example_glut_opengl2/main.cpp index 1089baee4..e9fc10686 100644 --- a/examples/example_glut_opengl2/main.cpp +++ b/examples/example_glut_opengl2/main.cpp @@ -3,6 +3,7 @@ // !!! GLUT/FreeGLUT IS OBSOLETE SOFTWARE. Using GLUT is not recommended unless you really miss the 90's. !!! // !!! If someone or something is teaching you GLUT in 2019, you are being abused. Please show some resistance. !!! +// !!! Prefer using GLFW Or SDL instead! #include "imgui.h" #include "../imgui_impl_glut.h" diff --git a/examples/imgui_impl_glut.cpp b/examples/imgui_impl_glut.cpp index 546a7b85d..af42d4ae8 100644 --- a/examples/imgui_impl_glut.cpp +++ b/examples/imgui_impl_glut.cpp @@ -3,6 +3,7 @@ // !!! GLUT/FreeGLUT IS OBSOLETE SOFTWARE. Using GLUT is not recommended unless you really miss the 90's. !!! // !!! If someone or something is teaching you GLUT in 2019, you are being abused. Please show some resistance. !!! +// !!! Prefer using GLFW or SDL instead! // Issues: // [ ] Platform: GLUT is unable to distinguish e.g. Backspace from CTRL+H or TAB from CTRL+I diff --git a/examples/imgui_impl_glut.h b/examples/imgui_impl_glut.h index 89be99935..c6fcfd072 100644 --- a/examples/imgui_impl_glut.h +++ b/examples/imgui_impl_glut.h @@ -3,6 +3,7 @@ // !!! GLUT/FreeGLUT IS OBSOLETE SOFTWARE. Using GLUT is not recommended unless you really miss the 90's. !!! // !!! If someone or something is teaching you GLUT in 2019, you are being abused. Please show some resistance. !!! +// !!! Prefer using GLFW or SDL instead! // Issues: // [ ] Platform: GLUT is unable to distinguish e.g. Backspace from CTRL+H or TAB from CTRL+I diff --git a/imgui.cpp b/imgui.cpp index 68ac63acb..1351d2858 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -369,7 +369,7 @@ CODE When you are not sure about a old symbol or function name, try using the Search/Find function of your IDE to look for comments or references in all imgui files. You can read releases logs https://github.com/ocornut/imgui/releases for more details. - - 2019/04/29 (1.70) - fixed ImDrawList rectangles with thick lines (>1.0f) not being as thick as requested. If you have custom rendering using rectangles with thick lines, they will appear thicker now. + - 2019/04/29 (1.70) - improved ImDrawList thick strokes (>1.0f) preserving correct thickness up to 90 degrees angles (e.g. rectangles). If you have custom rendering using thick lines, they will appear thicker now. - 2019/04/29 (1.70) - removed GetContentRegionAvailWidth(), use GetContentRegionAvail().x instead. Kept inline redirection function (will obsolete). - 2019/03/04 (1.69) - renamed GetOverlayDrawList() to GetForegroundDrawList(). Kept redirection function (will obsolete). - 2019/02/26 (1.69) - renamed ImGuiColorEditFlags_RGB/ImGuiColorEditFlags_HSV/ImGuiColorEditFlags_HEX to ImGuiColorEditFlags_DisplayRGB/ImGuiColorEditFlags_DisplayHSV/ImGuiColorEditFlags_DisplayHex. Kept redirection enums (will obsolete).