Skip to content

v1.74

Compare
Choose a tag to compare
@ocornut ocornut released this 25 Nov 18:12
· 2970 commits to master since this release

This is a general release, keeping with the rhythm of having more frequent, smaller releases.

Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!


Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
Wiki: https://github.com/ocornut/imgui/wiki for bindings, links, extensions etc.
FAQ: https://www.dearimgui.org/faq/
Issues and support: https://github.com/ocornut/imgui/issues
Discord server: https://discord.dearimgui.org


Thank you!

Ongoing work on dear imgui is currently being sponsored by Blizzard Entertainment and Google + general & community work by many individual users, hobbyists and studios (recent supporting studios include Remedy Entertainment and Next Level Games). See the readme for details. Huge thank you to all of you, past and present supporters! You help is very meaningful.

A lot of my time recently has been working on way to scale the team and increase velocity of Dear ImGui development. This is translating into contributions from more developers already visible in this version (with more to come!). Upcoming sponsors and donations will help fund an increasing amount of other developers.

Welcoming @rokups who recently joined the team!

Among the already visible things he contributed (with many more in the work), he has expanded our continous integration suite to test a large variety of the examples on many platforms. Linux/Mac support for the multi-viewports feature has improved. Ongoing work on the upcoming testing/automation framework has also progressed a lot, with more regression tests, and we are working on automated capturing tools which we will use to create documentations.

Much of our current work is happening on the Tables feature, which should open in public-beta very soon, and the Automation/Regression testing framework.

TL;DR;

  • Removed redirecting functions/enums names which were marked obsolete in 1.52 (October 2017).
  • Quantity of fixes.
  • Improved readme, docs, links, wiki hub.
  • Improved our continuous integration and testing suite.

Breaking Changes:

We are hitting the line where we will remove old functions names which were obsoleted 2 years ago (~1.52) resulting in a bunch of small cleanups. Other than that, we have a couple of obsoleted symbols but they should only affected a small portion of advanced users.

  • Removed redirecting functions/enums names which were marked obsolete in 1.52 (October 2017):
    • Begin() [old 5 args version] -> use Begin() [3 args], use SetNextWindowSize() SetNextWindowBgAlpha() if needed
    • IsRootWindowOrAnyChildHovered() -> use IsWindowHovered(ImGuiHoveredFlags_RootAndChildWindows)
    • AlignFirstTextHeightToWidgets() -> use AlignTextToFramePadding()
    • SetNextWindowPosCenter() -> use SetNextWindowPos() with a pivot of (0.5f, 0.5f)
    • ImFont::Glyph -> use ImFontGlyph
      If you were still using the old names, read "API Breaking Changes" section of imgui.cpp to find out the new names or equivalent features, or see how they were implemented until 1.73.
  • Inputs: Fixed a miscalculation in the keyboard/mouse "typematic" repeat delay/rate calculation, used
    by keys and e.g. repeating mouse buttons as well as the GetKeyPressedAmount() function.
    If you were using a non-default value for io.KeyRepeatRate (previous default was 0.250), you can
    add +io.KeyRepeatDelay to it to compensate for the fix.
    The function was triggering on: 0.0 and (delay+rate*N) where (N>=1). Fixed formula responds to (N>=0).
    Effectively it made io.KeyRepeatRate behave like it was set to (io.KeyRepeatRate + io.KeyRepeatDelay).
    Fixed the code and altered default io.KeyRepeatRate,Delay from 0.250,0.050 to 0.300,0.050 to compensate.
    If you never altered io.KeyRepeatRate nor used GetKeyPressedAmount() this won't affect you.
  • Misc: Renamed IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS to IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS. (#1038)
  • Misc: Renamed IMGUI_DISABLE_MATH_FUNCTIONS to IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS.
  • Fonts: ImFontAtlas::AddCustomRectRegular() now requires an ID larger than 0x110000 (instead of 0x10000) to
    conform with supporting Unicode planes 1-16 in a future update. ID below 0x110000 will now assert.
  • Backends: DX12: Added extra ID3D12DescriptorHeap parameter to ImGui_ImplDX12_Init() function.
    The value is unused in master branch but will be used by the multi-viewport feature. (#2851) [@obfuscate]

Other Changes:

  • InputText, Nav: Fixed Home/End key broken when activating Keyboard Navigation. (#787)
  • InputText: Filter out ASCII 127 (DEL) emitted by low-level OSX layer, as we are using the Key value. (#2578)
  • Layout: Fixed a couple of subtle bounding box vertical positioning issues relating to the handling of text baseline alignment. The issue would generally manifest when laying out multiple items on a same line, with varying heights and text baseline offsets. Some specific examples, e.g. a button with regular frame padding followed by another item with a multi-line label and no frame padding, such as: multi-line text, small button, tree node item, etc. The second item was correctly offset to match text baseline, and would interact/display correctly, but it wouldn't push the contents area boundary low enough.
  • Scrollbar: Fixed an issue where scrollbars wouldn't display on the frame following a frame where all child window contents would be culled.
  • ColorPicker: Fixed SV triangle gradient to block (broken in 1.73). (#2864, #2711). [@lewa-j]
  • TreeNode: Fixed combination of ImGuiTreeNodeFlags_SpanFullWidth and ImGuiTreeNodeFlags_OpenOnArrow incorrectly locating the arrow hit position to the left of the frame. (#2451, #2438, #1897)
  • TreeNode: The collapsing arrow accepts click even if modifier keys are being held, facilitating interactions with custom multi-selections patterns. (#2886, #1896, #1861)
  • TreeNode: Added IsItemToggledOpen() to explicitly query if item was just open/closed, facilitating interactions with custom multi-selections patterns. (#1896, #1861)
  • DragScalar, SliderScalar, InputScalar: Added p_ prefix to parameter that are pointers to the data to clarify how they are used, and more comments redirecting to the demo code. (#2844)
  • Error handling: Assert if user mistakenly calls End() instead of EndChild() on a child window. (#1651)
  • Misc: Optimized storage of window settings data (reducing allocation count).
  • Misc: Windows: Do not use _wfopen() if IMGUI_DISABLE_WIN32_FUNCTIONS is defined. (#2815)
  • Misc: Windows: Disabled win32 function by default when building with UWP. (#2892, #2895)
  • Misc: Using static_assert() when using C++11, instead of our own construct (avoid zealous Clang warnings).
  • Misc: Added IMGUI_DISABLE_FILE_FUNCTIONS/IMGUI_DISABLE_DEFAULT_FILE_FUNCTION to nullify or disable
    default implementation of ImFileXXX functions linking with fopen/fclose/fread/fwrite. (#2734)
  • Docs: Improved and moved FAQ to docs/FAQ.md so it can be readable on the web. [@ButternCream, @ocornut]
  • Docs: Moved misc/fonts/README.txt to docs/FONTS.txt.
  • Docs: Added permanent redirect from https://www.dearimgui.org/faq to FAQ page.
  • Demo: Added simple item reordering demo in Widgets -> Drag and Drop section. (#2823, #143) [@rokups]
  • Metrics: Show wire-frame mesh and approximate surface area when hovering ImDrawCmd. [@ShironekoBen]
  • Metrics: Expose basic details of each window key/value state storage.
  • Examples: DX12: Using IDXGIDebug1::ReportLiveObjects() when DX12_ENABLE_DEBUG_LAYER is enabled.
  • Examples: Emscripten: Removed BINARYEN_TRAP_MODE=clamp from Makefile which was removed in Emscripten 1.39.0 but required prior to 1.39.0, making life easier for absolutely no-one. (#2877, #2878) [@podsvirov]
  • Backends: OpenGL3: Fix building with pre-3.2 GL loaders which do not expose glDrawElementsBaseVertex(), using runtime GL version to decide if we set ImGuiBackendFlags_RendererHasVtxOffset. (#2866, #2852) [@dpilawa]
  • Backends: OSX: Fix using Backspace key. (#2578, #2817, #2818) [@DiligentGraphics]
  • Backends: GLFW: Previously installed user callbacks are now restored on shutdown. (#2836) [@malte-v]
  • CI: Set up a bunch of continuous-integration tests using GitHub Actions. We now compile many of the example applications on Windows, Linux, MacOS, iOS, Emscripten. Removed Travis integration. (#2865) [@rokups]

Beta features!

The docking (#2109) and multi-viewports (#1542) features are available in the docking branch, they are in beta but actively maintained and being used by many teams already. Your continuous feedback is always appreciated. Recent changes to the multi-viewport and docking features:

  • Docking: Can undock from the small triangle button. (#2109,. #2645)
  • Docking: Fixed node->HasCloseButton not honoring ImGuiDockNodeFlags_NoCloseButton in a floating node, leading to empty space at the right of tab-bars with those flags. (#2109)
  • Docking: Made docked windows not use style.ChildRounding.
  • Multi-viewports: Added multi-viewport support in the DX12 back-end. (#2851) [@obfuscate]

There's a CMake pull-request (#1713) if you prefer a traditional CMake integration over registering imgui sources files in your own project. There's a premake5 branch if you prefer the saner and nicer Visual Studio projects generated by premake.

Help wanted!

  • Dear ImGui is looking for a technical writer to help writing technical articles, tutorials and documentation. Please reach out if you are interesting in helping!.
  • One upcoming project will be to start writing a high quality "sample" game editor application to showcase how a fancy polished dear imgui application may look like (vs the standard demo which is constrained by nature of being embedded within the library).
  • Multi-viewports in particular needs help and bug-fixes on Linux and Mac. Specific workarounds for both SDL and GLFW are becoming highly desirable. I am myself not a Linux nor Mac users and those platforms have been lagging behind in term of multi-viewport supports. (#2117).
  • The Vulkan renderer appears to have issues (see vulkan tag)
  • Browsing issues and todo list you may find something something to contribute to!

Gallery

Wire-frame view in Metrics: [@ShironekoBen]

image

See Gallery threads for more pictures and to post yours!

@jmorton06: "I've been using Dear Imgui to make a simple editor for my game engine."

"imGuIZMO.quat** a object manipulator / orientator widgets"
imGuIZMO

"Pluribus Poker Bot"
pluribus poker bot

"A more recent screenshot of the Tracy profiler (https://bitbucket.org/wolfpld/tracy)"
tracy

@mua "My experimental Vulkan game engine's editor. Docking is heavily used,"
Capture

@samdauve "BabylonCpp - a C++ port of Babylon.js - is a 3D game engine, still in under heavy development, whose GUI is based on Dear ImGui."

image

image

@kosua20 "I'm using ImGui in my OpenGL playground, Rendu. My use is pretty basic for now, but the ability to add arbitrary shapes to the draw list was super useful for the controller mapping editor."

Rendu

"From this Streets of Rage 4 dev diary: https://www.youtube.com/watch?v=tF-rMNY0fBk"
SOR4_snapshot_03 13_ 2019 11 13_15 22 06

@floooh "Using https://github.com/juliettef/imgui_markdown as help viewer for Visual6502 Remix with internal and external links:"

Nov-19-2019 21-54-17