v1.69
版本发布时间: 2019-03-13 22:46:33
ocornut/imgui最新发布版本:v1.91.3(2024-10-04 21:48:34)
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()
ImGuiDataType_S8
/ImGuiDataType_U8
/ImGuiDataType_S16
/ImGuiDataType_U16
GetBackgroundDrawList()
Breaking Changes
- Renamed ColorEdit/ColorPicker's
ImGuiColorEditFlags_RGB
/_HSV
/_HEX
flags to respectivelyImGuiColorEditFlags_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()
toGetForegroundDrawList()
. 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 c2db7f63 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!
Gallery
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.