All Versions
13
Latest Version
Avg Release Cycle
53 days
Latest Release
51 days ago

Changelog History
Page 1

  • v1.75

    February 10, 2020

    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/
    Discord server: https://discord.dearimgui.org
    πŸ‘ Issues and support: https://github.com/ocornut/imgui/issues


    Thank you!

    πŸ‘ Ongoing work on Dear ImGui is currently financially supported by Blizzard, Google, Ubisoft, Nvidia along with Remedy, Next Level Games. Supercell, Framefield, Mobigame, DotEmu, Media Molecule.

    We are transitioning toward a B2B model to grow and sustain the project (also see: "What happened in 2019?"). If your company uses Dear ImGui and you would like to meet at GDC 2020, you can reach out to denis at dearimgui.com.

    πŸ‘ Huge thank you to all past and present supporters!

    TL;DR;

    • βœ‚ Removed redirecting functions/enums names which were marked obsolete in 1.53 (December 2017).
    • πŸ›  Dozens of fixes, e.g. for Ctrl+Tab, InputText, ColorEdit, in backends etc. among other things.
    • πŸš€ Made the new Tables API public (#2957), it is now available for testing in a branch and will be merged to master once stabilized (hopefully by next release). Feedback welcome!
    • βž• Added ImDrawList::AddNgon apis for explicit low-polygon count, in prevision for future version making all circles actually round. ImDrawList::AddCircle apis can now takes a zero segment count to use auto-tesselation.

    πŸ’₯ Breaking Changes

    • βœ‚ Removed redirecting functions/enums names that were marked obsolete in 1.53 (December 2017):
      If you were still using the old names, while you are cleaning up, considering enabling IMGUI_DISABLE_OBSOLETE_FUNCTIONS in imconfig.h even temporarily to have a pass at finding and removing up old API calls, if any remaining.
      • ShowTestWindow() -> use ShowDemoWindow()
      • IsRootWindowFocused() -> use IsWindowFocused(ImGuiFocusedFlags_RootWindow)
      • IsRootWindowOrAnyChildFocused() -> use IsWindowFocused(ImGuiFocusedFlags_RootAndChildWindows)
      • SetNextWindowContentWidth(w) -> use SetNextWindowContentSize(ImVec2(w, 0.0f)
      • GetItemsLineHeightWithSpacing() -> use GetFrameHeightWithSpacing()
      • ImGuiCol_ChildWindowBg -> use ImGuiCol_ChildBg
      • ImGuiStyleVar_ChildWindowRounding -> use ImGuiStyleVar_ChildRounding
      • ImGuiTreeNodeFlags_AllowOverlapMode -> use ImGuiTreeNodeFlags_AllowItemOverlap
      • IMGUI_DISABLE_TEST_WINDOWS -> use IMGUI_DISABLE_DEMO_WINDOWS
    • βœ‚ Removed implicit default parameter to IsMouseDragging(int button = 0) to be consistent with other mouse functions (none of the other functions have it).
    • Obsoleted calling ImDrawList::PrimReserve() with a negative count (which was vaguely documented and rarely if ever used). Instead we added an explicit PrimUnreserve() API which can be implemented faster. Also clarified pre-existing constraints which weren't documented (can only unreserve from the last reserve call). If you suspect you ever used that feature before (very unlikely, but grep for call to PrimReserve in your code), you can #define IMGUI_DEBUG_PARANOID in imconfig.h to catch existing calls. [@ShironekoBen]
    • ImDrawList::AddCircle()/AddCircleFilled() functions don't accept negative radius.
    • πŸ‘ Limiting Columns()/BeginColumns() api to 64 columns with an assert. While the current code technically supports it, future code may not so we're putting the restriction ahead.
    • 0️⃣ imgui_internal.h: changedImRect() default constructor initializes all fields to 0.0f instead of (FLT_MAX,FLT_MAX,-FLT_MAX,-FLT_MAX). If you used ImRect::Add() to create bounding boxes by adding multiple points into it without an explicit initialization, you may need to fix your initial value.

    Other Changes

    • πŸ†“ Inputs: Added ImGuiMouseButton enum for convenience (e.g. ImGuiMouseButton_Right=1). We forever guarantee that the existing value will not changes so existing code is free to use 0/1/2.
    • πŸ›  Nav: Fixed a bug where the initial CTRL-Tab press while in a child window sometimes selected the current root window instead of always selecting the previous root window. (#787)
    • ColorEdit: Fix label alignment when using ImGuiColorEditFlags_NoInputs. (#2955) [@rokups]
    • πŸ”’ ColorEdit: In HSV display of a RGB stored value, attempt to locally preserve Saturation when Value==0.0 (similar to changes done in 1.73 for Hue). Removed Hue editing lock since those improvements in 1.73 makes them unnecessary. (#2722, #2770). [@rokups]
    • ColorEdit: "Copy As" context-menu tool shows hex values with a '#' prefix instead of '0x'.
    • ColorEdit: "Copy As" content-menu tool shows hex values both with/without alpha when available.
    • βͺ InputText: Fix corruption or crash when executing undo after clearing input with ESC, as a byproduct we are allowing to later undo the revert with a CTRL+Z. (#3008).
    • InputText: Fix using a combination of _CallbackResize (e.g. for std::string binding), along with the _EnterReturnsTrue flag along with the rarely used property of using an InputText without persisting user-side storage. Previously if you had e.g. a local unsaved std::string and reading result back from the widget, the user string object wouldn't be resized when Enter key was pressed. (#3009)
    • MenuBar: Fix minor clipping issue where occasionally a menu text can overlap the right-most border.
    • Window: Fix SetNextWindowBgAlpha(1.0f) failing to override alpha component. (#3007) [@Albog]
    • βœ… Window: When testing for the presence of the ImGuiWindowFlags_NoBringToFrontOnFocus flag we test both the focused/clicked window (which could be a child window) and the root window.
    • πŸ’… ImDrawList: AddCircle(), AddCircleFilled() API can now auto-tessellate when provided a segment count of zero. Alter tessellation quality with style.CircleSegmentMaxError. [@ShironekoBen]
    • ImDrawList: Add AddNgon(), AddNgonFilled() API with a guarantee on the explicit segment count. In the current branch they are essentially the same as AddCircle(), AddCircleFilled() but as we will rework the circle rendering functions to use textures and automatic segment count selection, those new api can fill a gap. [@ShironekoBen]
    • Columns: ImDrawList::Channels* functions now work inside columns. Added extra comments to suggest using user-owned ImDrawListSplitter instead of ImDrawList functions. [@rokups]
    • Misc: Added ImGuiMouseCursor_NotAllowed enum so it can be used by more shared widgets. [@rokups]
    • Misc: Added IMGUI_DISABLE compile-time definition to make all headers and sources empty.
    • πŸ–¨ Misc: Disable format checks when using stb_printf, to allow using extra formats. Made IMGUI_USE_STB_SPRINTF a properly documented imconfig.h flag. (#2954) [@loicmolinari]
    • Misc: Added misc/single_file/imgui_single_file.h, We use this to validate compiling all *.cpp files in a same compilation unit. Actual users of that technique (also called "Unity builds") can generally provide this themselves, so we don't really recommend you use this. [@rokups]
    • CI: Added PVS-Studio static analysis on the continuous-integration server. [@rokups]
    • πŸ‘ Backends: GLFW, SDL, Win32, OSX, Allegro: Added support for ImGuiMouseCursor_NotAllowed. [@rokups]
    • πŸ‘ Backends: GLFW: Added support for the missing mouse cursors newly added in GLFW 3.4+. [@rokups]
    • Backends: SDL: Wayland: use SDL_GetMouseState (because there is no global mouse state available on Wayland). (#2800, #2802) [@NeroBurner]
    • πŸš€ Backends: GLFW, SDL: report Windows key (io.KeySuper) as always released. Neither GLFW nor SDL can correctly report the key release in every cases (e.g. when using Win+V) causing problems with some widgets. The next release of GLFW (3.4+) will have a fix for it. However since it is both difficult and discouraged to make use of this key for Windows application anyway, we just hide it. (#2976)
    • Backends: Win32: Added support for #define IMGUI_IMPL_WIN32_DISABLE_GAMEPAD to disable all XInput using code, and IMGUI_IMPL_WIN32_DISABLE_LINKING_XINPUT to disable linking with XInput,the later may be problematic if compiling with recent Windows SDK and you want your app to run on Windows 7. You can instead try linking with Xinput9_1_0.lib instead. (#2716)
    • πŸ‘ Backends: Glut: Improved FreeGLUT support for MinGW. (#3004) [@podsvirov]
    • Backends: Emscripten: Avoid forcefully setting IMGUI_DISABLE_FILE_FUNCTIONS. (#3005) [@podsvirov]
    • Examples: OpenGL: Explicitly adding -DIMGUI_IMPL_OPENGL_LOADER_GL3W to Makefile to match linking settings (otherwise if another loader such as Glew is accessible, the OpenGL3 backend might automatically use it). (#2919, #2798)
    • πŸ‘ Examples: OpenGL: Added support for glbindings OpenGL loader. (#2870) [@rokups]
    • Examples: Emscripten: Demonstrating embedding fonts in Makefile and code. (#2953) [@Oipo]
    • πŸš€ Examples: Metal: Wrapped main loop in @autoreleasepool block to ensure allocations get freed even if underlying system event loop gets paused due to app nap. (#2910, #2917) [@bear24rw]

    Beta features!

    New! The tables (#2957) features is now available for testing. When it stabilize we will merge it to master.

    Tables

    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 + Nav: Fixed messed up Ctrl+Tab order with docked windows.
    • βͺ Docking + Nav: Fixed failing to restore NavId when refocusing a child within a docked window.
    • βͺ Docking + Nav: Fixed failing to restore NavId when refocusing due to missing nav window (when it stops being submitted).
    • πŸ›  Docking: Fixed a bug where the tab bar of a hidden dockspace would keep requesting focus. (#2960)
    • Docking: Added experimental DockNodeFlagsOverrideSet/DockNodeFlagsOverrideClear flags in ImGuiWindowClass (currently experimenting with toolbar idioms).
    • 🏁 Viewports: Fix resizing viewport-owning windows when mouse pos is outside the InnerClipRect (can happen with OS decoration on).
    • Viewports: Preserve last known size for minimized main viewport to be consistent with secondary viewports. Amend 606175b, d8ab2c1.
    • Backends: SDL: Honor NoTaskBarIcon flag under non Win32 OS. (#2117)
    • Backends: GLFW, SDL: Platform monitors declared properly even if multi-viewport is not enabled.

    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!.
    • 🐧 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!

    πŸ‘€ See Gallery threads for more pictures and to post yours!

    Rainbow Six
    https://montreal.ubisoft.com/en/ubisoft-sponsors-user-interface-library-for-c-dear-imgui/

    "Ubisoft has used Dear ImGui in the last two years on several AAA projects. Adopted by the Assassin’s Creed team in 2016, and then by Rainbow Six a year later, it has been described by team members as a great tool that enables fast iterations and the empowerment of programmers to create content creation tools and visualization.
    β€œDear ImGui is an elegant immediate mode GUI that fundamentally changes the way that production and debug tools are developed at Ubisoft. This productivity library is an amazingly efficient way to increase the quality of these tools,” says Nicolas Fleury, Technical Architect on Rainbow Six: Siege."

    Screenshot_DearImGUI_1_SAFE

    Screenshot_DearImGUI_2_SAFE_rs

    tacit-texview, a texture viewer for game devs
    by Tristan Grimmer (who made the ProggyClean font used as the fault dear imgui font!)
    https://github.com/bluescan/tacit-texview

    πŸ‘€ "This viewer is useful for game devs as it displays important information like the presence of an alpha channel and querying specific pixels for their colour." [..] "Support for viewing dds files is implemented -- you can view all mipmaps if they are present, and see cubemaps in a 'T' layout." [..] "Tacit-texview can be used to generate contact sheets for flip-book animation. "

    Screenshot_Cubemap

    Sculptron
    https://render.otoy.com/forum/viewtopic.php?f=7&t=73278
    Sculptron_Image

    nCine game engine
    https://ncine.github.io/
    ncParticleEditor

    @ggerganov "Just for lulz: Dear ImGui in a text terminal:" https://github.com/ggerganov/imtui
    4370FJt

    @AirGuanZ "I have been using Dear ImGui to make a scene editor for my off-line renderer"
    editor

    LightTracer
    https://lighttracer.org/
    🌐 "Public beta of the Light Tracer standalone version is open at http://lighttracer.org! [...] we were able to reuse both GUI and renderer code for web and desktop versions"
    EPh5YfLWkAY8xiW

  • v1.74

    November 25, 2019

    πŸš€ 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.
      0️⃣ 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
      0️⃣ 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!

    Wide-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

  • v1.73

    September 24, 2019

    πŸš€ Fall celebration 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!


    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for bindings, links, 3rd parties helpers/extensions, widgets etc.
    πŸ‘ Issues and support: https://github.com/ocornut/imgui/issues
    πŸ†• Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    Thank you!

    Ongoing work on dear imgui is currently being sponsored by Blizzard Entertainment and Google (welcome Google!) + general & community work by many individual users, hobbyists and studios. 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.

    πŸ“š 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! (omarcornut at gmail)

    TL;DR;

    • πŸ‘ Nav: Home/End key support (was missing!).
    • πŸ›  Tabs/TabBar fixes.
    • β†ͺ ColorEdit workaround against HSV discontinuities when storing data as RGB.
    • πŸ›  DragScalar: fixes for dragging unsigned values on ARM cpus.
    • Tree: added flags to span available horizontal space or cover indentation area.
    • Font: improve drawing of ellipsis ("...") which we will start to make more use of.
    • πŸš€ Misc: release unused pools of vertex memory when windows become unused for a while.
    • πŸ›  Dozens of other fixes, tweaks and improvements.

    Other Changes:

    • πŸ‘ Nav, Scrolling: Added support for Home/End key. (#787)
    • ColorEdit: Disable Hue edit when Saturation==0 instead of letting Hue values jump around.
    • ColorEdit, ColorPicker: In HSV display of a RGB stored value, attempt to locally preserve Hue when Saturation==0, which reduces accidentally lossy interactions. (#2722, #2770) [@rokups]
    • πŸ’… ColorPicker: Made rendering aware of global style alpha of the picker can be faded out. (#2711). Note that some elements won't accurately fade down with the same intensity, and the color wheel when enabled will have small overlap glitches with (style.Alpha < 1.0).
    • πŸ›  TabBar: Fixed single-tab not shrinking their width down.
    • πŸ›  TabBar: Fixed clicking on a tab larger than tab-bar width creating a bouncing feedback loop.
    • TabBar: Feed desired width (sum of unclipped tabs width) into layout system to allow for auto-resize. (#2768) (before 1.71 tab bars fed the sum of current width which created feedback loops in certain situations).
    • TabBar: Improved shrinking for large number of tabs to avoid leaving extraneous space on the right side. Individuals tabs are given integer-rounded width and remainder is spread between tabs left-to-right.
    • πŸ›  Columns, Separator: Fixed a bug where non-visible separators within columns would alter the next row position differently than visible ones.
    • SliderScalar: Improved assert when using U32 or U64 types with a large v_max value. (#2765) [@loicmouton]
    • DragInt, DragFloat, DragScalar: Using (v_min > v_max) allows locking any edits to the value.
    • πŸ›  DragScalar: Fixed dragging of unsigned values on ARM cpu (float to uint cast is undefined). (#2780) [@dBagrat]
    • ♻️ TreeNode: Added ImGuiTreeNodeFlags_SpanAvailWidth flag. This extends the hit-box to the right-most edge, even if the node is not framed. (Note: this is not the default in order to allow adding other items on the same line. In the future we will aim toward refactoring the hit-system to be front-to-back, allowing more natural overlapping of items, and then we will be able to make this the default.) . (#2451, #2438, #1897) [@Melix19, @PathogenDavid]
    • TreeNode: Added ImGuiTreeNodeFlags_SpanFullWidth flag. This extends the hit-box to both the left-most and right-most edge of the working area, bypassing indentation.
    • CollapsingHeader: Added support for ImGuiTreeNodeFlags_Bullet and ImGuiTreeNodeFlags_Leaf on framed nodes, mostly for consistency. (#2159, #2160) [@goran-w]
    • 🚚 Selectable: Added ImGuiSelectableFlags_AllowItemOverlap flag in public api (was previously internal only).
    • πŸ’… Style: Allow style.WindowMenuButtonPosition to be set to ImGuiDir_None to hide the collapse button. (#2634, #2639)
    • πŸ‘ Font: Better ellipsis ("...") drawing implementation. Instead of drawing three pixel-ey dots (which was glaringly unfitting with many types of fonts) we first attempt to find a standard ellipsis glyphs within the loaded set. Otherwise we render ellipsis using '.' from the font from where we trim excessive spacing to make it as narrow as possible. (#2775) [@rokups]
    • ImDrawList: Clarified the name of many parameters so reading the code is a little easier. (#2740)
    • πŸ”€ ImDrawListSplitter: Fixed merging channels if the last submitted draw command used a different texture. (#2506)
    • πŸ’… Using offsetof() when available in C++11. Avoids Clang sanitizer complaining about old-style macros. (#94)
    • ImVector: Added find(), find_erase(), find_erase_unsorted() helpers.
    • βž• Added a mechanism to compact/free the larger allocations of unused windows (buffers are compacted when a window is unused for 60 seconds, as per io.ConfigWindowsMemoryCompactTimer = 60.0f). Note that memory usage has never been reported as a problem, so this is merely a touch of overzealous luxury. (#2636)
    • πŸ“š Documentation: Various tweaks and improvements to the README page. [@ker0chan]
    • Backends: OpenGL3: Tweaked initialization code allow application calling ImGui_ImplOpenGL3_CreateFontsTexture() before ImGui_ImplOpenGL3_NewFrame(), which sometimes can be convenient.
    • Backends: OpenGL3: Attempt to automatically detect default GL loader by using __has_include. (#2798) [@o-micron]
    • πŸ›  Backends: DX11: Fixed GSGetShader() call not passing an initialized instance count, which would generally make the DX11 debug layer complain (bug added in 1.72).
    • Backends: Vulkan: Added support for specifying multisample count. Set ImGui_ImplVulkan_InitInfo::MSAASamples to one of the VkSampleCountFlagBits values to use, default is non-multisampled as before. (#2705, #2706) [@vilya]
    • Examples: OSX: Fix example_apple_opengl2/main.mm not forwarding mouse clicks and drags correctly. (#1961, #2710) [@intonarumori, @ElectricMagic]
    • Misc: Updated stb_rect_pack.h from 0.99 to 1.00 (fixes by @rygorous: off-by-1 bug in best-fit heuristic, fix handling of rectangles too large to fit inside texture). (#2762) [@tido64]

    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: Fix BeginDocked() path that creates node so that SetNextWindowDockID() doesn't immediately discard the node. (#2109)
    • 🏁 Docking: Fix for node created at the same time as windows that are still resizing (typically with io.ConfigDockingAlwaysTabBar) to not be zero/min sized. (#2109). The fix delays their visibility by one frame, which is not ideal but not very problematic as the .ini data gets populated after that.
    • Docking: Fix a crash that could occur with a malformed ini file (DockNode Parent value pointing to a missing node).
    • Viewport: Fix modal/popup window being stuck in unowned hidden viewport associated to fallback window without stealing it back. Fix modal reference viewport when opened outside of another window. (#1542)
    • Viewport: Modals don't need to set ImGuiViewportFlags_NoFocusOnClick, this also mitigate the issue described by #2445, which becomes particularly bad with unfocused modal. (#1542)
    • 🚚 Viewport: better case case where host window gets moved and resized simultaneous (toggling maximized state). There's no perfect solution there, than using io.ConfigViewportsNoAutoMerge = false. (#1542)
    • 🏁 Viewport, Docking: Fixed incorrect assignment of IsFallbackWindow which would tag dock node host windows created in NewFrame() as such, messing with popup viewport inheritance.
    • πŸ›  Viewport: Fixed issue where resize grip would display as hovered while mouse is still off the OS bounds so click would miss it and focus the OS window behind expected one. (#1542)
    • 🏁 Viewport: Fix to allow multiple shutdown / calls to DestroyPlatformWindows(). (#2769)
    • 🍎 Viewport: Backends: GLFW: Fix setting window size on macOS (#2767, #2117) [@rokups]
    • 🐧 Viewport: Backends: GLFW+Linux: Fix window having incorrect size after uncollapse. (#2756, #2117) [@rokups]
    • 🏁 Viewport: Backends: DirectX9: Workaround for windows not refreshing when main viewport has no draw call. (#2560)

    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 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)
    • πŸ‘ The DirectX12 renderer needs multi-viewports support.
    • Browsing issues and todo list you may find something something to contribute to!

    πŸ‘€ See Gallery threads for more pictures and to post yours!

    "An industrial application for inspecting water pipes using an ultrasonic scanner" by @soulthreads
    πŸ‘€ Also see https://github.com/soulthreads/imgui-plot widget.
    minipars

    πŸ‘€ "Writing a Minecraft seed preview / NBT editor / possibly world editor" by @mnurzia
    image

    Micro Profiler from https://github.com/ConfettiFX/The-Forge by @zeux based on @jonasmr's microprofile
    MP_Detailed_02

  • v1.72

    July 28, 2019

    Happy summer!
    πŸš€ This is a general release following 1.71, 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!


    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    πŸ‘ Issues and support: https://github.com/ocornut/imgui/issues
    πŸ†• Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    Thank you!

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

    Welcoming Adrien Marchand (@LaMarche05) who started spending more time on Dear ImGui, currently contributing to ongoing work the automation/testing system (yet unreleased). Also check out his adventure game Edgar: Bokbok in Boulzac!

    πŸ“š 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! (omarcornut at gmail)

    TL;DR;

    • 🏁 Child windows don't get in the way of mouse wheel scrolling!
    • πŸ›  Easier to implement scrolling tracking. Various scrolling fixes.
    • πŸ›  Various columns fixes (maybe last ones until we switch to the wonderful upcoming Columns V2/Table system!).
    • πŸ‘ InputText: Support for keypad Enter key (ah!).
    • πŸ’» Tools: Added Metrics>Tools>Item Picker which is convenient to easily break in debugger at the location an UI item is submitted. Particular useful in large or unknown codebases. (#2673)
    • βž• Added SDL2+DirectX11 example application because clearly we don't have enough examples! (#2632, #2612, #2482) [@vincenthamm]
    • πŸ”€ Dozens of other fixes and small additions. Also synched the Docking branch accordingly.

    πŸ’₯ Breaking Changes

    • βœ‚ Removed redirecting functions/enums names that were marked obsolete in 1.51 (June 2017). 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.
      • ImGuiCol_Column*, ImGuiSetCond_* enums.
      • IsItemHoveredRect(), IsPosHoveringAnyWindow(), IsMouseHoveringAnyWindow(), IsMouseHoveringWindow() functions.
      • IMGUI_ONCE_UPON_A_FRAME macro.
    • πŸ“‡ Renamed ImFontAtlas::CustomRect to ImFontAtlasCustomRect. Kept redirection typedef (will obsolete).
    • βœ‚ Removed TreeAdvanceToLabelPos() which is rarely used and only does SetCursorPosX(GetCursorPosX() + GetTreeNodeToLabelSpacing()). Kept redirection function (will obsolete). (#581, #324)

    🚚 Please note that functions obsoleted in 1.53 will probably be removed by the end of the year. If your language binding is still on 1.53 please consider updating the bindings (newer bindings are mostly auto-generated, based on the metadata output by cimgui).

    Other Changes:

    • πŸ”’ Scrolling: Made mouse-wheel scrolling lock the underlying window until the mouse is moved again or until a short delay expires (~2 seconds). This allow uninterrupted scroll even if child windows are passing under the mouse cursor. (#2604)
    • Scrolling: Mouse wheel scrolling while hovering a child window is automatically forwarded to parent window if ScrollMax is zero on the scrolling axis. Also still the case if ImGuiWindowFlags_NoScrollWithMouse is set (not new), but previously the forwarding would be disabled if ImGuiWindowFlags_NoScrollbar was set on the child window, which is not the case any more. Forwarding can still be disabled by setting ImGuiWindowFlags_NoInputs. (amend #1502, #1380).
    • Scrolling: Made it possible for mouse wheel and navigation-triggered scrolling to override a call to
      SetScrollX()/SetScrollY(), making it possible to use a simpler stateless pattern for auto-scrolling:

      // (Submit items..)if (ImGui::GetScrollY() >= ImGui::GetScrollMaxY()) // If scrolling at the already at the bottom..ImGui::SetScrollHereY(1.0f); // ..make last item fully visible

    • Scrolling: Added SetScrollHereX(), SetScrollFromPosX() for completeness. (#1580) [@kevreco]

    • πŸ›  Window: Fixed InnerClipRect right-most coordinates using wrong padding setting (introduced in 1.71).

    • πŸ’… Window: Fixed old SetWindowFontScale() api value from not being inherited by child window. Added comments about the right way to scale your UI (load a font at the right side, rebuild atlas, scale style).

    • Scrollbar: Avoid overlapping the opposite side when window (often a child window) is forcibly too small.

    • Combo: Hide arrow when there's not enough space even for the square button.

    • βœ… InputText: Testing for newly added ImGuiKey_KeyPadEnter key. (#2677, #2005) [@amc522]

    • TabBar: Fixed unfocused tab bar separator color (was using ImGuiCol_Tab, should use ImGuiCol_TabUnfocusedActive).

    • πŸ›  Columns: Fixed a regression from 1.71 where the right-side of the contents rectangle within each column
      would wrongly use a WindowPadding.x instead of ItemSpacing.x like it always did. (#125, #2666)

    • Columns: Made the right-most edge reaches up to the clipping rectangle (removing half of WindowPadding.x
      worth of asymmetrical/extraneous padding, note that there's another half that conservatively has to offset
      the right-most column, otherwise it's clipping width won't match the other columns). (#125, #2666)

    • Columns: Improved honoring alignment with various values of ItemSpacing.x and WindowPadding.x. (#125, #2666)

    • Columns: Made GetColumnOffset() and GetColumnWidth() behave when there's no column set, consistently with other column functions. (#2683)

    • πŸ›  InputTextMultiline: Fixed vertical scrolling tracking glitch.

    • πŸ›  Word-wrapping: Fixed overzealous word-wrapping when glyph edge lands exactly on the limit. Because
      πŸ›  of this, auto-fitting exactly unwrapped text would make it wrap. (fixes initial 1.15 commit, 78645a7).

    • πŸ’… Style: Attenuated default opacity of ImGuiCol_Separator in Classic and Light styles.

    • πŸ’… Style: Added style.ColorButtonPosition (left/right, defaults to ImGuiDir_Right) to move the color button
      of ColorEdit3/ColorEdit4 functions to either side of the inputs.

    • ♻️ IO: Added ImGuiKey_KeyPadEnter and support in various back-ends (previously back-ends would need to specifically redirect key-pad keys to their regular counterpart). This is a temporary attenuating measure until we actually refactor and add whole sets of keys into the ImGuiKey enum. (#2677, #2005) [@amc522]

    • Misc: Made Button(), ColorButton() not trigger an "edited" event leading to IsItemDeactivatedAfterEdit()
      returning true. This also effectively make ColorEdit4() not incorrect trigger IsItemDeactivatedAfterEdit()
      when clicking the color button to open the picker popup. (#1875)

    • Misc: Added IMGUI_DISABLE_METRICS_WINDOW imconfig.h setting to explicitly compile out ShowMetricsWindow().

    • Debug, Metrics: Added Metrics>Tools>Item Picker tool which allow clicking on a widget to break in the debugger
      within the item code. The tool calls IM_DEBUG_BREAK() which can be redefined in imconfig.h if needed.

    • πŸ‘― ImDrawList: Fixed CloneOutput() helper crashing. (#1860) [@gviot]

    • πŸ”€ ImDrawListSplitter: (and ImDrawList::ChannelsSplit()): Fixed an issue with merging draw commands between channel 0 and 1. (#2624)

    • πŸ›  ImDrawListSplitter: Fixed memory leak when using low-level split api (was not affecting ImDrawList api, also this type was added in 1.71 and not advertised as a public-facing feature).

    • Fonts: binary_to_compressed_c.cpp: Display an error message if failing to open/read the input font file.

    • 🌲 Demo: Log, Console: Using a simpler stateless pattern for auto-scrolling.

    • Demo: Widgets: Showing how to use the format parameter of Slider/Drag functions to display the name of an enum value instead of the underlying integer value.

    • βͺ Backends: DX10/DX11: Backup, clear and restore Geometry Shader is any is bound when calling renderer.

    • Backends: DX11: Clear Hull Shader, Domain Shader, Compute Shader before rendering. Not backing/restoring them.

    • Backends: OSX: Disabled default native Mac clipboard copy/paste implementation in core library (added in 1.71), because it needs application to be linked with -framework ApplicationServices. It can be explicitly enabled back by using #define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS in imconfig.h. Re-added equivalent using NSPasteboard api in the imgui_impl_osx.mm experimental back-end. (#2546)

    • Backends: SDL2: Added dummy ImGui_ImplSDL2_InitForD3D() function to make D3D support more visible. (#2482, #2632) [@josiahmanson]

    • Examples: Added SDL2+DirectX11 example application. (#2632, #2612, #2482) [@vincenthamm]

    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: Making it possible to undock a node by clicking on the tab bar / title bar for the node. (#2645).
    • Docking: Explicitly inhibit constraint when docked for now. Fix clipping issue related to constraints. (#2690).
    • πŸ›  Docking: Fixed dragging/resizing from OS decoration not marking settings as dirty.
    • 🏁 Docking: Renamed io.ConfigDockingTabBarOnSingleWindows to io.ConfigDockingAlwaysTabBar. ImGuiWindowClass::DockingAlwaysTabBar to set on individual windows.
    • Docking: Perform simple check: assert if Docking or Viewport are enabled exactly on frame 1 (instead of frame 0 or later), which is a common user error leading to loss of .ini data on load.
    • Docking: Fix so that an appearing window making a dock node reappear won't have a zero-size on its first frame.
    • 🏁 Docking: Fixed using ImGuiDockNodeFlags_AutoHideTabBar with io.ConfigDockingTabBarOnSingleWindows.
    • Docking: Added ImGuiDockNode to .natvis file.
    • πŸ›  Docking: Fixed support for large meshes in GetBackgroundDrawList(), GetForegroundDrawList(). (#2638)
    • Viewport: Fix monitor dpi info not being copied to main viewport when multi-viewports are not enabled. (#2621, #1676)
    • ♻️ Viewport: Refactored ImGuiWindowClass'sViewportFlagsOverrideMask+ViewportFlagsOverrideValue into ViewportFlagsOverrideSet+ViewportFlagsOverrideClear which appears easier to grasp. (#1542)
    • πŸ”€ Viewport: Added ImGuiViewportFlags_NoAutoMerge to prevent merging into host viewport in a per-window basis via the ImGuiWindowClass override mechanism. (#1542)

    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 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)
    • πŸ‘ The DirectX12 renderer needs multi-viewports support.
    • Browsing issues and todo list you may find something something to contribute to!

    πŸ‘€ See Gallery threads for more pictures and to post yours!

    Light Tracer Render (https://lighttracer.org/)
    Light Tracer screenshot

    Karnaugh Studio (https://sevcikdaniel.github.io/karnaugh-studio/)
    Karnaugh Studio screenshot

    πŸ“„ Azure Kinect Viewer (https://docs.microsoft.com/en-us/azure/kinect-dk/azure-kinect-viewer)
    Azure Kinect Viewer

    ⏱ "An industrial application used dear-ImGUI,a scheduling system to control several robot and other devices,
    so fast & cool, and from now on, say goodbye to MFC, thanks Dear-ImGUI." @haohuixin

    🐎 "ImGui interface for my global illumination playground profiler. I made a custom widget to render task performance breakdown and legend for it, it was pretty enjoyable." @Raikiri

    Polyscope (http://polyscope.run/)
    Polyscope

    nnview: neural network viewer (https://github.com/lighttransport/nnview)

    RaysimLib (https://github.com/leggedrobotics/raisimLib)

  • v1.72.b

    July 31, 2019

    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    πŸ†• New users: go to https://discourse.dearimgui.org for technical support.

    TL;DR;

    πŸš€ Releasing this as a hot-fix as 1.71 and 1.72 have a regression with gamepad/keyboard controls, where scrolling didn't always correctly track the navigated item.

    πŸ”„ Changes

    • 🚚 Nav, Scrolling: Fixed programmatic scroll leading to a slightly incorrect scroll offset when the window has decorations or a menu-bar (broken in 1.71). This was mostly noticeable when a keyboard/gamepad movement led to scrolling the view, or using e.g. SetScrollHereY() function.
    • Nav: Made hovering non-MenuItem Selectable not re-assign the source item for keyboard navigation.
    • πŸ›  Nav: Fixed an issue with ImGuiWindowFlags_NavFlattened (beta flag) where widgets not entirely fitting in child window (often selectables because of their protruding sides) would be not considered as entry points to to navigate toward the child window. (#787)
  • v1.71

    June 12, 2019

    πŸš€ Monthly release!

    πŸš€ This is a general release following 1.70, 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!


    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    πŸ‘ Issues and support: https://github.com/ocornut/imgui/issues
    πŸ†• Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    Thank you!

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

    TL;DR;

    • πŸ‘ Made it possible to support large meshes (64k+ vertices) while compiling with 16-bit indices, back-end need to set ImGuiBackendFlags_RendererHasVtxOffset and honor ImDrawCmd::VtxOffset. Added support for this in most back-ends.
    • πŸ‘€ Made SetNextWindowContentSize() actually useful (see details below).
    • πŸ‘ Freetype: Support for Monochrome rasterizing which for some fonts can get you high-quality non-AA looking output.
    • πŸ›  Fixes for tree nodes, collapsing headers, tab bars, columns inside an horizontally scrolling region.
    • πŸ”€ Dozens of other fixes and small additions. Also synched the Docking branch accordingly.

    πŸ’₯ Breaking Changes

    • IO: changed io.AddInputCharacter(unsigned short c) signature to io.AddInputCharacter(unsigned int c).
    • πŸ“‡ Renamed SetNextTreeNodeOpen() to SetNextItemOpen(). Kept inline redirection function (will obsolete).
    • 🏁 Window: rendering of child windows outer decorations (e.g. bg color, border, scrollbars) is now performed as part of their parent window, avoiding the creation of an extraneous draw commands. If you have overlapping child windows with decorations, and relied on their relative z-order to be mapped to submission their order, this will affect your rendering. The optimization is disabled if the parent window has no visual output because it appears to be the most common situation leading to the creation of overlapping child windows. Please reach out if you are affected by this change!

    Other Changes:

    • 🏁 Window: clarified behavior of SetNextWindowContentSize(). Content size is defined as the size available after removal of WindowPadding on each sides. So SetNextWindowContentSize(ImVec2(100,100)) + auto-resize will always allow submitting a 100x100 item without creating a scrollbar, regarding of the WindowPadding value. The exact meaning of ContentSize for decorated windows was previously ill-defined.
    • πŸ›  Window: Fixed auto-resize with AlwaysVerticalScrollbar or AlwaysHorizontalScrollbar flags.
    • πŸ›  Window: Fixed one case where auto-resize by double-clicking the resize grip would make either scrollbar appear for a single frame after the resize.
    • βͺ Separator: Revert 1.70 "Declare its thickness (1.0f) to the layout" change. It's not incorrect but it breaks existing some layout patterns. Will return back to it when we expose Separator flags.
    • πŸ›  Fixed InputScalar, InputScalarN, SliderScalarN, DragScalarN with non-visible label from inserting style.ItemInnerSpacing.x worth of trailing spacing.
    • πŸ›  Fixed InputFloatX, SliderFloatX, DragFloatX functions erroneously reporting IsItemEdited() multiple times when the text input doesn't match the formatted output value (e.g. input "1" shows "1.000"). It wasn't much of a problem because we typically use the return value instead of IsItemEdited() here.
    • πŸ›  Fixed uses of IsItemDeactivated(), IsItemDeactivatedAfterEdit() on multi-components widgets and after EndGroup(). (#2550, #1875)
    • πŸ›  Fixed crash when appending with BeginMainMenuBar() more than once and no other window are showing. (#2567)
    • πŸ›  ColorEdit: Fixed the color picker popup only displaying inputs as HSV instead of showing multiple options. (#2587, broken in 1.69 by #2384).
    • πŸ‘ CollapsingHeader: Better clipping when a close button is enabled and it overlaps the label. (#600)
    • Scrollbar: Minor bounding box adjustment to cope with various border size.
    • πŸ’… Scrollbar, Style: Changed default style.ScrollbarSize from 16 to 14.
    • πŸ›  Combo: Fixed rounding not applying with the ImGuiComboFlags_NoArrowButton flag. (#2607) [@DucaRii]
    • 🚚 Nav: Fixed gamepad/keyboard moving of window affecting contents size incorrectly, sometimes leading to scrollbars appearing during the movement.
    • πŸš€ Nav: Fixed rare crash when e.g. releasing Alt-key while focusing a window with a menu at the same frame as clearing the focus. This was in most noticeable in back-ends such as Glfw and SDL which emits key release events when focusing another viewport, leading to Alt+clicking on void on another viewport triggering the issue. (#2609)
    • πŸ›  TreeNode, CollapsingHeader: Fixed highlight frame not covering horizontal area fully when using horizontal scrolling. (#2211, #2579)
    • πŸ›  TabBar: Fixed BeginTabBar() within a window with horizontal scrolling from creating a feedback loop with the horizontal contents size.
    • πŸ›  Columns: Fixed Columns() within a window with horizontal scrolling from not covering the full horizontal area (previously only worked with an explicit contents size). (#125)
    • πŸ›  Columns: Fixed Separator() from creating an extraneous draw command. (#125)
    • πŸ›  Columns: Fixed Selectable() with ImGuiSelectableFlags_SpanAllColumns from creating an extraneous draw command. (#125)
    • πŸ’… Style: Added style.WindowMenuButtonPosition (left/right, defaults to ImGuiDir_Left) to move the collapsing/docking button to the other side of the title bar.
    • πŸ’… Style: Made window close button cross slightly smaller.
    • πŸ›  Log/Capture: Fixed BeginTabItem() label not being included in a text log/capture.
    • πŸ‘ ImDrawList: Added ImDrawCmd::VtxOffset value to support large meshes (64k+ vertices) using 16-bits indices. The renderer back-end needs to set io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset to enable this, and honor the ImDrawCmd::VtxOffset field. Otherwise the value will always be zero. This has the advantage of preserving smaller index buffers and allowing to execute on hardware that do not support 32-bits indices. Most examples back-ends have been modified to support the VtxOffset field.
    • ImDrawList: Added ImDrawCmd::IdxOffset value, equivalent to summing element count for each draw command. This is provided for convenience and consistency with VtxOffset.
    • ImDrawCallback: Allow to override the signature of ImDrawCallback by #define-ing it. This is meant to facilitate custom rendering back-ends passing local render-specific data to the draw callback.
    • ImFontAtlas: FreeType: Added RasterizerFlags::Monochrome flag to disable font anti-aliasing. Combine with RasterizerFlags::MonoHinting for best results. (#2545) [@HolyBlackCat]
    • πŸ›  ImFontGlyphRangesBuilder: Fixed unnecessarily over-sized buffer, which incidentally was also not fully cleared. Fixed edge-case overflow when adding character 0xFFFF. (#2568). [@NIKE3500]
    • 🏁 Demo: Added full "Dear ImGui" prefix to the title of "Dear ImGui Demo" and "Dear ImGui Metrics" windows.
    • 0️⃣ Backends: Add native Mac clipboard copy/paste default implementation in core library to match what we are dealing with Win32, and to facilitate integration in custom engines. (#2546) [@andrewwillmott]
    • Backends: OSX: imgui_impl_osx: Added mouse cursor support. (#2585, #1873) [@actboy168]
    • πŸ‘ Examples/Backends: DirectX9/10/11/12, Metal, Vulkan, OpenGL3 (Desktop GL only): Added support for large meshes (64k+ vertices) with 16-bits indices, enable 'ImGuiBackendFlags_RendererHasVtxOffset' in those back-ends.
    • πŸ‘ Examples/Backends: Don't filter characters under 0x10000 before calling io.AddInputCharacter(), the filtering is done in io.AddInputCharacter() itself. This is in prevision for fuller Unicode support. (#2538, #2541)

    Beta features!

    The docking (#2109) and multi-viewport (#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. There's a CMake pull-request (#1713).

    Future features!

    A sneak peak at what I am currently working on..

    Tables (multi-purpose replacement for columns)
    Tables

    βœ… Testing suite
    Automation

    Help wanted!

    • 🐧 Multi-viewports in particular needs help on Linux and Mac, and specific workarounds for both SDL and GLFW are becoming highly desirable. (#2117),
    • πŸ‘€ The Vulkan renderer appears to have issues (see vulkan tag)
    • πŸ‘ The DirectX12 renderer needs multi-viewports support.
    • Browsing issues and todo list you may find something something to contribute to!

    πŸ‘€ See Gallery threads for more pictures and to post yours!

    OpenSage (https://github.com/OpenSAGE/OpenSAGE)
    OpenSage

    NVIDIA Omniverse viewer (https://developer.nvidia.com/nvidia-omniverse)
    OpenSage in motion: https://twitter.com/NVBackchannel/status/1131712329446506497

    Unnamed game by @Aarkham

    pcsx-redux by @grumpycoders https://github.com/grumpycoders/pcsx-redux
    pcsx-redux

    Orbital (https://github.com/AlexAltea/orbital)
    orbital

  • v1.70

    May 06, 2019

    Hello!

    πŸš€ In spite of the greaaat looking version number, this is a general release following 1.69, 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 features that you've been ignoring until now!


    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    πŸ‘ Issues and support: https://github.com/ocornut/imgui/issues
    πŸ†• Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    Thank you

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

    TL;DR;

    • βž• Added ImDrawCallback_ResetRenderState = -1 special ImDrawList callback value to request back-end renderer to reset its render state, in a standardized manner.
    • Layout: Added SetNextItemWidth() helper to avoid using PushItemWidth()/PopItemWidth() for single items.
    • βͺ 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).
    • Examples: SDL: Support for SDL_GameController gamepads (enable with ImGuiConfigFlags_NavEnableGamepad). (#2509) [@DJLink]
    • πŸ›  Examples: Vulkan: Various fixes.
    • Examples: Added GLFW+Metal and Emscripten examples.
    • Examples: Renamed imgui_impl_freeglut to imgui_impl_glut.
    • πŸ›  Many many other fixes, improvements, small additions. Read below!

    πŸ’₯ Breaking Changes

    • 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 (about +30%). (#2518) [@rmitton]
    • Obsoleted GetContentRegionAvailWidth(), use GetContentRegionAvail().x instead! Kept inline redirection function.
    • Examples: Vulkan: imgui_impl_vulkan: Added MinImageCount/ImageCount fields in ImGui_ImplVulkan_InitInfo, required during initialization to specify the number of in-flight image requested by swap chains. (was previously a hard #define IMGUI_VK_QUEUED_FRAMES 2). (#2071, #1677) [@nathanvoglsam]
    • Examples: Vulkan: Tidying up the demo/internals helpers (most engine/app should not rely on them but it is possible you have!).

    Other Changes:

    • πŸ‘ ImDrawList: Added ImDrawCallback_ResetRenderState = -1, a special ImDrawList::AddCallback() value to request the renderer back-end to reset its render state. (#2037, #1639, #2452). 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 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)
    • Layout: Added SetNextItemWidth() helper to avoid using PushItemWidth()/PopItemWidth() for single items. Note that SetNextItemWidth() currently only affect the same subset of items as PushItemWidth(), generally referred to as the large framed+labeled items. Because the new SetNextItemWidth() function is explicit we may later extend its effect to more items.
    • πŸ›  Layout: Fixed PushItemWidth(-width) for right-side alignment laying out some items (button, listbox, etc.) with negative sizes if the 'width' argument was smaller than the available width at the time of item submission.
    • πŸ›  Window: Fixed window with the ImGuiWindowFlags_AlwaysAutoResize flag unnecessarily extending their hovering boundaries by a few pixels (this is used to facilitate resizing from borders when available for a given window). One of the noticeable minor side effect was that navigating menus would have had a tendency to disable 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)
    • βͺ 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 clear the focus again.
    • πŸ›  Popups: Fixed right-click from closing all popups instead of aiming at the hovered popup level (regression in 1.67).
    • πŸ‘ Selectable: With ImGuiSelectableFlags_AllowDoubleClick doesn't return true on the mouse button release following the double-click. Only first mouse release + second mouse down (double-click) returns true. Likewise for internal ButtonBehavior() with both _PressedOnClickRelease | _PressedOnDoubleClick. (#2503)
    • πŸš€ GetMouseDragDelta(): also returns the delta on the mouse button released frame. (#2419)
    • GetMouseDragDelta(): verify that mouse positions are valid otherwise returns zero.
    • πŸ‘ Inputs: Support for horizontal scroll with Shift+Mouse Wheel. (#2424, #1463) [@LucaRood]
    • PlotLines, PlotHistogram: Ignore NaN values when calculating min/max bounds. (#2485)
    • πŸ›  Columns: Fixed boundary of clipping being off by 1 pixel within the left column. (#125)
    • Separator: Declare its thickness (1.0f) to the layout, making items on both ends of a separator look more symmetrical.
    • Combo, Slider, Scrollbar: Improve rendering in situation when there's only a few pixels available (<3 pixels).
    • πŸ›  Nav: Fixed Drag/Slider functions going into text input mode when keyboard CTRL is held while pressing NavActivate.
    • πŸ›  Drag and Drop: Fixed drag source with ImGuiDragDropFlags_SourceAllowNullID and null ID from receiving click regardless of being covered by another window (it didn't honor correct hovering rules). (#2521)
    • ImDrawList: Improved algorithm for mitre joints on thick lines, preserving correct thickness up to 90 degrees angles, also faster to output. (#2518) [@rmitton]
    • Misc: Added IM_MALLOC()/IM_FREE() macros mimicking IM_NEW/IM_DELETE so user doesn't need to revert to using the ImGui::MemAlloc()/MemFree() calls directly.
    • Misc: Made IMGUI_CHECKVERSION() macro also check for matching size of ImDrawIdx.
    • 🏁 Metrics: Added "Show windows rectangles" tool to visualize the different rectangles.
    • 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: 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).
    • Examples: Vulkan: Avoid passing negative coordinates to vkCmdSetScissor, which debug validation layers do not like.
    • Examples: Vulkan: Added ImGui_ImplVulkan_SetMinImageCount() to change min image count at runtime. (#2071) [@nathanvoglsam]
    • Examples: DirectX9: Fixed erroneous assert in ImGui_ImplDX9_InvalidateDeviceObjects(). (#2454)
    • Examples: DirectX10/11/12, Allegro, Marmalade: Render functions early out when display size is zero (minimized). (#2496)
    • πŸ›  Examples: GLUT: Fixed existing FreeGLUT example to work with regular GLUT. (#2465) [@andrewwillmott]
    • Examples: GLUT: Renamed imgui_impl_freeglut.cpp/.h to imgui_impl_glut.cpp/.h. (#2465) [@andrewwillmott]
    • Examples: GLUT: Made io.DeltaTime always > 0. (#2430)
    • ⚑️ Examples: Visual Studio: Updated default platform toolset+sdk in vcproj files from v100+sdk7 (vs2010) to v110+sdk8 (vs2012). This is mostly so we can remove reliance on DXSDK_DIR for the DX10/DX11 example, which if existing and when switching to recent SDK ends up conflicting and creating warnings.

    Beta features!

    The docking (#2109) and multi-viewport (#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. There's a CMake pull-request (#1713).

    Help wanted!

    • 🐧 Multi-viewports in particular needs help on Linux and Mac, and specific workarounds for both SDL and GLFW are becoming highly desirable. (#2117),
    • πŸ‘€ The Vulkan renderer appears to have issues (see vulkan tag)
    • πŸ‘ The DirectX12 renderer needs multi-viewports support.
    • Browsing issues and todo list you may find something something to contribute to!

    πŸ‘€ See Gallery threads for more pictures and to post yours!

    Student showcase: DigiPen Singapore 2019 End of Spring.
    "All custom engines are done from scratch for 2 semesters of 13 weeks each. Plus of course an additional 5 other modules per semester. ImGui is one of the few libraries that they are allowed to use. Please check the Game Gallery if you wish to play some of these games. Click Here"

    "Year 2 (GAM200/250)
    These two modules are about creating 2D Games. Teams are usually 5 to 6 people."

    GAM250-CipherGames
    GAM250-FrozenAnvil
    GAM250-WorkPlaySleepStudios

    "Year 3 (GAM300/350)
    Here students do 3D Games. These teams are about 8 to 10 people. Here we restrict which libraries they can use even more. Linear Color pipelines, Shadows, HDR, PBR, etc for graphics."

    GAM350-Abloominations
    GAM350-Rubrics-
    GAM350-Sludger

    πŸ‘€ See many more screenshots from DigiPen Singapore 2019 students: #2265 (comment)


    Student showcase: DigiPen Bilbao Junior Students

    editor
    nodes

    More screenshots from DigiPen Bilbao students: #2265 (comment)


    Atlas 64k Graphics Breakdown - Demoscene Stream (2019/05/01)
    https://www.youtube.com/watch?v=Y3d8jR_IwYw / http://www.pouet.net/prod.php?which=80996
    57197283-c5a7cf80-6f65-11e9-8c93-a06c61650cc8

    Fork of ImGui designed to look more like Adobe's Spectrum (https://github.com/adobe/imgui)
    example
    πŸ‘€ See details

    Single Header Hotkey editor by @CedricGuillemet (https://github.com/CedricGuillemet/ImHotKey)
    ImHotKey

    LIONant's Property System by @TomasArce (https://gitlab.com/LIONant/properties)
    Properties

  • v1.69

    March 13, 2019

    πŸš€ This is a general release, keeping with the beat 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 features to explore that you've been ignoring until now!


    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    πŸ‘ Issues and support: https://github.com/ocornut/imgui/issues
    πŸ†• Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    Thank you

    Some ongoing work on dear imgui is currently being sponsored by Blizzard Entertainment + general & community work by many individual users, hobbyists and studios via e.g. Patreon or support contracts. See the readme for details. Huge thank you to all of you, past and present supporters! You help is very meaningful.

    TL;DR;

    • βž• Added native support for u8/s8/u16/s16 data types in DragScalar, InputScalar, SliderScalar functions.
    • βž• Added GetBackgroundDrawList() helper to easily submit draw list primitives behind every windows.
    • βž• Added InputTextWithHint() to display a greyed out message when an input field is empty.
    • βž• Added ImGuiColorEditFlags_InputHSV to edit HSV colors without internal RGB<>HSV roundtrips.
    • πŸ’» Various fixes in the LogXXX functions to capture UI as text.
    • πŸ›  Examples: OpenGL: Fixes to support GL ES 2.0 (WebGL 1.0).
    • πŸ›  Dozens of other fixes and improvements.

    InputTextWithHint()
    image

    ImGuiDataType_S8/ImGuiDataType_U8/ImGuiDataType_S16/ImGuiDataType_U16
    image

    GetBackgroundDrawList()
    image

    πŸ’₯ Breaking Changes

    • Renamed ColorEdit/ColorPicker's ImGuiColorEditFlags_RGB/_HSV/_HEX flags to respectively ImGuiColorEditFlags_DisplayRGB/_DisplayHSV/_DisplayHex. This is because the addition of new flag ImGuiColorEditFlags_InputHSV makes the earlier one ambiguous. Keep redirection enum values (will obsolete). (#2384) [@haldean]
    • πŸ“‡ Renamed GetOverlayDrawList() to GetForegroundDrawList(). Kept redirection function (will obsolete). (#2391)

    Other Changes:

    • βž• Added GetBackgroundDrawList() helper to quickly get access to a ImDrawList that will be rendered behind every other windows. (#2391, #545)
    • πŸ‘ DragScalar, InputScalar, SliderScalar: Added support for u8/s8/u16/s16 data types (ImGuiDataType_S8 etc.). We are reusing function instances of larger types to reduce code size. (#643, #320, #708, #1011)
    • βž• Added InputTextWithHint() to display a description/hint in the text box when no text has been entered. (#2400) [@Organic-Code, @ocornut]
    • πŸ›  Nav: Fixed a tap on AltGR (e.g. German keyboard) from navigating to the menu layer.
    • πŸ›  Nav: Fixed Ctrl+Tab keeping active InputText() of a previous window active after the switch. (#2380)
    • πŸ›  Fixed IsItemDeactivated()/IsItemDeactivatedAfterEdit() from not correctly returning true when tabbing out of a focusable widget (Input/Slider/Drag) in most situations. (#2215, #1875)
    • πŸ’… InputInt, InputFloat, InputScalar: Fix to keep the label of the +/- buttons centered when style.FramePadding.x is abnormally larger than style.FramePadding.y. Since the buttons are meant to be square (to align with e.g. color button) we always use FramePadding.y. (#2367)
    • InputInt, InputScalar: +/- buttons now respects the natural type limits instead of overflowing or underflowing the value.
    • πŸ›  InputText: Fixed an edge case crash that would happen if another widget sharing the same ID is being swapped with an InputText that has yet to be activated.
    • πŸ›  InputText: Fixed various display corruption related to swapping the underlying buffer while a input widget is active (both for writable and read-only paths). Often they would manifest when manipulating the scrollbar of a multi-line input text.
    • ColorEdit, ColorPicker, ColorButton: Added ImGuiColorEditFlags_InputHSV to manipulate color values encoded as HSV (in order to avoid HSV<>RGB round trips and associated singularities). (#2383, #2384) [@haldean]
    • πŸ›  ColorPicker: Fixed a bug/assertion when displaying a color picker in a collapsed window while dragging its title bar. (#2389)
    • πŸ›  ColorEdit: Fixed tooltip not honoring the ImGuiColorEditFlags_NoAlpha contract of never reading the 4th float in the array (value was read and discarded). (#2384) [@haldean]
    • πŸ›  MenuItem, Selectable: Fixed disabled widget interfering with navigation (fix c2db7f6 in 1.67).
    • πŸ›  TabBar: Fixed a crash when using many BeginTabBar() recursively (didn't affect docking). (#2371)
    • TabBar: Added extra mis-usage error recovery. Past the assert, common mis-usage don't lead to hard crashes any more, facilitating integration with scripting languages. (#1651)
    • πŸ›  TabBar: Fixed ImGuiTabItemFlags_SetSelected being ignored if the tab is not visible (with scrolling policy enabled) or if is currently appearing.
    • πŸ›° TabBar: Fixed Tab tooltip code making drag and drop tooltip disappear during the frame where the drag payload activate a tab.
    • TabBar: Reworked scrolling policy (when ImGuiTabBarFlags_FittingPolicyScroll is set) to teleport the view when aiming at a tab far away the visible section, and otherwise accelerate the scrolling speed to cap the scrolling time to 0.3 seconds.
    • πŸ›  Text: Fixed large Text/TextUnformatted calls not declaring their size into layout when starting below the lower point of the current clipping rectangle. Somehow this bug has been there since v1.0! It was hardly noticeable but would affect the scrolling range, which in turn would affect some scrolling request functions when called during the appearing frame of a window.
    • πŸ›  Plot: Fixed divide-by-zero in PlotLines() when passing a count of 1. (#2387) [@Lectem]
    • πŸ›  Log/Capture: Fixed LogXXX functions emitting an extraneous leading carriage return.
    • πŸ›  Log/Capture: Fixed an issue when empty string on a new line would not emit a carriage return.
    • Log/Capture: Fixed LogXXX functions 'auto_open_depth' parameter being treated as an absolute tree depth instead of a relative one.
    • πŸ›  Log/Capture: Fixed CollapsingHeader trailing ascii representation being "#" instead of "##".
    • ImFont: Added GetGlyphRangesVietnamese() helper. (#2403)
    • πŸ’… Misc: Asserting in NewFrame() if style.WindowMinSize is zero or smaller than (1.0f,1.0f).
    • Demo: Using GetBackgroundDrawList() and GetForegroundDrawList() in "Custom Rendering" demo.
    • Demo: InputText: Demonstrating use of ImGuiInputTextFlags_CallbackResize. (#2006, #1443, #1008).
    • 🏁 Examples: GLFW, SDL: Preserve DisplayFramebufferScale when main viewport is minimized. (This is particularly useful for the viewport branch because we are not supporting per-viewport frame-buffer scale. It fixes windows not refreshing when main viewport is minimized.) (#2416)
    • Examples: OpenGL: Fix to be able to run on ES 2.0 / WebGL 1.0. [@rmitton, @gabrielcuvillier]
    • Examples: OpenGL: Fix for OSX not supporting OpenGL 4.5, we don't try to read GL_CLIP_ORIGIN even if the OpenGL headers/loader happens to define the value. (#2366, #2186)
    • πŸ‘ Examples: Allegro: Added support for touch events (emulating mouse). (#2219) [@dos1]
    • Examples: DirectX9: Minor changes to match the other DirectX examples more closely. (#2394)

    I want more!

    The docking (#2109) and multi-viewport (#1542) features are available in the docking branch, actively being used by dozens of teams. Your continuous feedback is always appreciated. There's a CMake pull-request (#1713).

    Help wanted!

    • 🐧 Multi-viewports in particular needs help on Linux and Mac, and specific workarounds for both SDL and GLFW are becoming highly desirable. (#2117),
    • πŸ‘€ The Vulkan renderer appears to have issues (see vulkan tag)
    • πŸ‘ The DirectX12 renderer needs multi-viewports support.
    • Browsing issues and todo list you may find something something to contribute to!

    πŸ‘€ Not enough new pictures posted since 1.68! See Gallery threads for pictures and to post yours!

    🚧 Instead I'll post a GIF showcasing the WIP automation/testing system (#435), setup to rearrange the demo contents to recreate a screenshot used on the front page. All interactions here are done without human intervention, but played at a human-watchable speed. The system is being designed to also run headless. No ETA yet but it is expected that automation/testing of dear imgui and dear imgui apps will be a thing in 2019.

    20190222_automation

  • v1.68

    February 19, 2019

    πŸš€ This is a general release, keeping with the beat 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 features to explore that you've been ignoring until now!


    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    πŸ‘ Issues and support: https://github.com/ocornut/imgui/issues
    πŸ†• Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    image

    Thank you

    Some ongoing work on dear imgui is currently being sponsored by Blizzard Entertainment + general & community work by many individual users, hobbyists and studios via e.g. Patreon or support contracts. See the readme for details. Huge thank you to all of you, past and present supporters! You help is very meaningful.

    TL;DR;

    • βž• Added ImDrawData::FramebufferScale to facilitate future support for multiple-viewport over multiple screen with varying retina scale factor (prefer using instead of io.DisplayFramebufferScale!
    • βž• Added ImGui::IsItemActivated().
    • βž• Added ImGuiTabBarFlags_TabListPopupButton flag.
    • βž• Added ImGuiStyle::SelectableTextAlign.
    • πŸ‘ Examples: Win32: Added support for XInput gamepad (if ImGuiConfigFlags_NavEnableGamepad is enabled).
    • πŸ›  Dozens of bug fixes and other improvements.

    πŸ’₯ Breaking Changes

    • πŸ‘» Made it illegal/assert when io.DisplayTime == 0.0f (with an exception for the first frame). This shouldn't affect you unless for some reason your time step calculation lack precision and give you a zero value, in which case you may e.g. replace it with a dummy small value. Because that replacement would be arbitrary we currently don't try to do it on dear imgui's side.
    • βœ‚ Removed io.DisplayVisibleMin/DisplayVisibleMax (which were marked obsolete and removed from viewport/docking branch already).

    Other Changes:

    • βž• Added .editorconfig file for text editors to standardize using spaces. (#2038) [@kudaba]
    • ImDrawData: Added FramebufferScale field (currently a copy of the value from io.DisplayFramebufferScale). This is to allow render functions being written without pulling any data from ImGuiIO, allowing incoming multi-viewport feature to behave on Retina display and with multiple displays.
      ⚑️ If you are not using a custom binding, please update your render function code ahead of time, and use draw_data->FramebufferScale instead of io.DisplayFramebufferScale. (#2306, #1676)
    • βž• Added IsItemActivated() as an extension to the IsItemDeactivated/IsItemDeactivatedAfterEdit functions
      which are useful to implement variety of undo patterns. (#820, #956, #1875)
    • βͺ InputText: Fixed a bug where ESCAPE would not restore the initial value in all situations. (#2321) [@relick]
    • πŸ›  InputText: Fixed a bug where ESCAPE would be first captured by the Keyboard Navigation code. (#2321, #787)
    • πŸ›  InputText: Fixed redo buffer exhaustion handling (rare) which could corrupt the undo character buffer. The way the redo/undo buffers work would have made it generally unnoticeable to the user. (#2333)
    • πŸ›  Fixed range-version of PushID() and GetID() not honoring the "###" operator to restart from the seed value.
    • πŸ›  Fixed CloseCurrentPopup() on a child-menu of a modal incorrectly closing the modal. (#2308)
    • Tabs: Added ImGuiTabBarFlags_TabListPopupButton flag to show a popup button on manual tab bars. (#261, #351)
    • 🚚 Tabs: Removed ImGuiTabBarFlags_NoTabListPopupButton which was available in 1.67, but not documented and actually had zero use (taking the liberty of not listing this in breaking change since it was thoroughly unused).
    • πŸ’… Tabs: Fixed a minor clipping glitch when changing style's FramePadding from frame to frame.
    • πŸ›  Tabs: Fixed border (when enabled) so it is aligned correctly mid-pixel and appears as bright as other borders.
    • πŸ’… Style, Selectable: Added ImGuiStyle::SelectableTextAlign and ImGuiStyleVar_SelectableTextAlign. (#2347) [@haldean]
    • πŸ’… Menus: Tweaked horizontal overlap between parent and child menu (to help convey relative depth) from using style.ItemSpacing.x to style.ItemInnerSpacing.x, the later being expected to be smaller. (#1086)
    • πŸ›  RadioButton: Fixed label horizontal alignment to precisely match Checkbox().
    • πŸ‘ Window: When resizing from an edge, the border is more visible and better follow the rounded corners.
    • 🏁 Window: Fixed initial width of collapsed windows not taking account of contents width (broken in 1.67). (#2336, #176)
    • Scrollbar: Fade out and disable interaction when too small, in order to facilitate using the resize grab on very small window, as well as reducing visual noise/overlap.
    • ⚑️ ListBox: Better optimized when clipped / non-visible.
    • ⚑️ InputTextMultiline: Better optimized when clipped / non-visible.
    • πŸ›  Font: Fixed high-level ImGui::CalcTextSize() used by most widgets from erroneously subtracting 1.0f*scale to calculated text width. Among noticeable side-effects, it would make sequences of repeated Text/SameLine calls not align the same as a single call, and create mismatch between high-level size calculation and those performed with the lower-level ImDrawList api. (#792) [@SlNPacifist]
    • πŸ— Font: Fixed building atlas when specifying duplicate/overlapping ranges within a same font. (#2353, #2233)
    • πŸ›  ImDrawList: Fixed AddCircle(), AddCircleFilled() angle step being off, which was visible when drawing a "circle" with a small number of segments (e.g. an hexagon). (#2287) [@baktery]
    • ImGuiTextBuffer: Added append() function (unformatted).
    • 0️⃣ ImFontAtlas: Added 0x2000-0x206F general punctuation range to default ChineseFull / ChineseSimplifiedCommon ranges. (#2093)
    • πŸ‘ ImFontAtlas: FreeType: Added support for imgui allocators + custom FreeType only SetAllocatorFunctions. (#2285) [@Vuhdo]
    • πŸ— ImFontAtlas: FreeType: Fixed using imgui_freetype.cpp in unity builds. (#2302)
    • πŸ›  Demo: Fixed "Log" demo not initializing properly, leading to the first line not showing before a Clear. (#2318) [@bluescan]
    • 🌲 Demo: Added "Auto-scroll" option in Log/Console demos. (#2300) [@nicolasnoble, @ocornut]
    • πŸ›  Examples: Metal, OpenGL2, OpenGL3, Vulkan: Fixed offsetting of clipping rectangle with ImDrawData::DisplayPos != (0,0) when the display frame-buffer scale scale is not (1,1). While this doesn't make a difference when using master branch, this is effectively fixing support for multi-viewport with Mac Retina Displays on those examples. (#2306) [@rasky, @ocornut]
      Also using ImDrawData::FramebufferScale instead of io.DisplayFramebufferScale.
    • Examples: Clarified the use the ImDrawData::DisplayPos to offset clipping rectangles.
    • 🏁 Examples: Win32: Using GetForegroundWindow()+IsChild() instead of GetActiveWindow() to be compatible with windows created in a different thread or parent. (#1951, #2087, #2156, #2232) [many people]
    • Examples: SDL: Using the SDL_WINDOW_ALLOW_HIGHDPI flag. (#2306, #1676) [@rasky]
    • πŸ‘ Examples: Win32: Added support for XInput gamepad (if ImGuiConfigFlags_NavEnableGamepad is enabled).
    • Examples: Win32: Added support for mouse buttons 4 and 5 via WM_XBUTTON* messages. (#2264)
    • Examples: DirectX9: Explicitly disable fog (D3DRS_FOGENABLE) before drawing in case user state has it set. (#2288, #2230)
    • Examples: OpenGL2: Added #define GL_SILENCE_DEPRECATION to cope with newer XCode warnings.
    • Examples: OpenGL3: Using GLSL 4.10 shaders for any GLSL version over 410 (e.g. 430, 450). (#2329) [@BrutPitt]

    I want more!

    🐧 The docking (#2109) and multi-viewport (#1542) features are available in the docking branch, actively being used by dozens of teams. Your continuous feedback is always appreciated. Multi-viewport in particular needs help on Linux and Mac (#2117). There's a CMake pull-request (#1713).

    Imogen by @CedricGuillemet
    68747470733a2f2f692e696d6775722e636f6d2f7351664f3542722e706e67

    RemedyBG

    🏁 > RemedyBG is a 64-bit Windows debugger written from scratch with the goal of replacing the behemoth Visual Studio debugger.

    remedybg-01

    imgui_markdown.h

    Single-header file for Markdown rendering.

    imgui_markdown_avoyd_about_oss

    GPU profiler at game studio Endroad
    gpuprofiler

    (Right-side) VJ software based on imgui & openFrameworks, by @yumataesu
    πŸ‘€ Also see GIF.
    dwxpuxsu0aar02i jpg large

  • v1.67

    January 15, 2019

    Happy new year!

    πŸ‘€ See https://github.com/ocornut/imgui for the project homepage.
    πŸš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    πŸ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    Issues: https://github.com/ocornut/imgui/issues
    πŸ‘ Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    πŸš‘ Next morning hotfix: A previous tag for the 1.67 release pointed to commit 7a5058e it is now pointing d38d7c6 (two commits later) including a fix for when using multiple append calls to BeginChild/EndChild.

    Thank you

    Some ongoing work on dear imgui is currently being sponsored by Blizzard Entertainment + general & community work by many individual users, hobbyists and studios on Patreon. See the readme for details and a more complete list. Huge thank you to all of you, past and present supporters! You help is very meaningful.

    TL;DR;

    • βž• Added Tab Bar api. This was extracted from the Docking branch (#2109) which is its primary user. You can now uses programatically created tabs without relying on Docking.
    • πŸ›  Fixes and optimizations to the font atlas builder (both stb_truetype and freetype versions).
    • Resizing windows from edge is now enabled by default if the backend supports mouse cursors shapes.
    • ⚑️ About 20% faster in typical debug/unoptimized builds.
    • 🏁 A dozen of other additions and fixes (in gamepad/keyboard navigation, DragFloat, auto-resizing windows uncollapsing, ImGuiWindowFlags_UnsavedDocument, io.ConfigWindowsMoveFromTitleBarOnly, io.AddInputCharacter, etc. read details below).

    (Demo->Layout->Tabs and Demo->Examples->Documents)
    image

    (Demo->Examples->Documents)
    imgui_capture_0002

    πŸ’₯ Breaking Changes

    • Made it illegal to call Begin("") with an empty string. This somehow accidentally worked before but had various undesirable side-effect as the window would have ID zero. In particular it is causing problems in viewport/docking branches.
    • 🏁 Renamed io.ConfigResizeWindowsFromEdges to io.ConfigWindowsResizeFromEdges and removed its [Beta] mark. The addition of new configuration options in the Docking branch is pushing for a little reorganization of those names.
    • πŸ“‡ Renamed ImFontAtlas::GlyphRangesBuilder to ImFontGlyphRangesBuilder. Keep redirection typedef (will obsolete).

    Other Changes:

    • βž• Added BETA api for Tab Bar/Tabs widgets: (#261, #351)
      • Added BeginTabBar(), EndTabBar(), BeginTabItem(), EndTabItem(), SetTabItemClosed() API.
      • Added ImGuiTabBarFlags flags for BeginTabBar() (currently has 8 options).
      • Added ImGuiTabItemFlags flags for BeginTabItem() (currently has 4 options).
      • Style: Added ImGuiCol_Tab, ImGuiCol_TabHovered, ImGuiCol_TabActive, ImGuiCol_TabUnfocused, ImGuiCol_TabUnfocusedActive colors.
      • Demo: Added Layout->Tabs demo code.
      • Demo: Added "Documents" example app showcasing possible use for tabs. This feature was merged from the Docking branch in order to allow the use of regular tabs in your code. (It does not provide the docking/splitting/merging of windows available in the Docking branch)
    • Added ImGuiWindowFlags_UnsavedDocument window flag to append '*' to title without altering the ID, as a convenience to avoid using the ### operator. In the Docking branch this also has an effect on tab closing behavior.
    • 🚚 Window, Focus, Popup: Fixed an issue where closing a popup by clicking another window with the _NoMove flag would refocus the parent window of the popup instead of the newly clicked window.
    • Window: Contents size is preserved while a window collapsed. Fix auto-resizing window losing their size for one frame when uncollapsed.
    • Window: Contents size is preserved while a window contents is hidden (unless it is hidden for resizing purpose).
    • Window: Resizing windows from edge is now enabled by default (io.ConfigWindowsResizeFromEdges=true). Note that it only works if the back-end sets ImGuiBackendFlags_HasMouseCursors, which the standard back-ends do.
    • 🏁 Window: Added io.ConfigWindowsMoveFromTitleBarOnly option. This is ignored by window with no title bars (often popups). This affects clamping window within the visible area: with this option enabled title bars need to be visible. (#899)
    • πŸ›  Window: Fixed using SetNextWindowPos() on a child window (which wasn't really documented) position the cursor as expected in the parent window, so there is no mismatch between the layout in parent and the position of the child window.
    • InputFloat: When using ImGuiInputTextFlags_ReadOnly the step buttons are disabled. (#2257)
    • πŸ›  DragFloat: Fixed broken mouse direction change with power!=1.0. (#2174, #2206) [@Joshhua5]
    • 🏁 Nav: Fixed an keyboard issue where holding Activate/Space for longer than two frames on a button would unnecessary keep the focus on the parent window, which could steal it from newly appearing windows. (#787)
    • ⚑️ Nav: Fixed animated window titles from being updated when displayed in the CTRL+Tab list. (#787)
    • 🌲 Error recovery: Extraneous/undesired calls to End() are now being caught by an assert in the End() function closer to the user call site (instead of being reported in EndFrame). Past the assert, they don't lead to crashes any more. (#1651). Missing calls to End(), past the assert, should not lead to crashes or to the fallback Debug window appearing on screen. Those changes makes it easier to integrate dear imgui with a scripting language allowing, given asserts are redirected into e.g. an error log and stopping the script execution.
    • ImFontAtlas: Stb and FreeType: Atlas width is now properly based on total surface rather than glyph count (unless overridden with TexDesiredWidth).
    • πŸ— ImFontAtlas: Stb and FreeType: Fixed atlas builder so missing glyphs won't influence the atlas texture width. (#2233)
    • πŸ— ImFontAtlas: Stb and FreeType: Fixed atlas builder so duplicate glyphs (when merging fonts) won't be included in the rasterized atlas.
    • πŸ›  ImFontAtlas: FreeType: Fixed abnormally high atlas height.
    • πŸ›  ImFontAtlas: FreeType: Fixed support for any values of TexGlyphPadding (not just only 1).
    • πŸš€ ImDrawList: Optimized some of the functions for performance of debug builds where non-inline function call cost are non-negligible. (Our test UI scene on VS2015 Debug Win64 with /RTC1 went ~5.9 ms -> ~4.9 ms. In Release same scene stays at ~0.3 ms.)
    • IO: Added io.BackendPlatformUserData, io.BackendRendererUserData, io.BackendLanguageUserData void* for storage use by back-ends.
    • IO: Renamed InputCharacters[], marked internal as was always intended. Please don't access directly, and use AddInputCharacter() instead!
    • IO: AddInputCharacter() goes into a queue which can receive as many characters as needed during the frame. This is useful for automation to not have an upper limit on typing speed. Will later transition key/mouse to use the event queue later.
    • πŸ’… Style: Tweaked default value of style.DisplayWindowPadding from (20,20) to (19,19) so the default style as a value which is the same as the title bar height.
    • πŸ’… Demo: "Simple Layout" and "Style Editor" are now using tabs.
    • 🏁 Demo: Added a few more things under "Child windows" (changing ImGuiCol_ChildBg, positioning child, using IsItemHovered after a child).
    • Examples: DirectX10/11/12: Made imgui_impl_dx10/dx11/dx12.cpp link d3dcompiler.lib from the .cpp file to ease integration.
    • Examples: Allegro 5: Properly destroy globals on shutdown to allow for restart. (#2262) [@DomRe]

    I want more!

    🐧 The docking (#2109) and multi-viewport (#1542) features are actively being used by dozens of teams. Your continuous feedback is always appreciated. Multi-viewport in particular needs help on Linux and Mac (#2117).
    There's a CMake pull-request (#1713).

    Zep (text editor widget) by @cmaughan
    sample

    glChAoS.P by @BrutPitt
    sshot_201917_6158

    Internal tooling for Crossout by Targem Games
    crossout

    πŸ’… C64 style by @Nullious (font, colors)
    c64 imgui