v1.76
版本发布时间: 2020-04-13 02:25:31
ocornut/imgui最新发布版本:v1.91.3(2024-10-04 21:48:34)
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, Ubisoft, Nvidia, Google, along with Activision, Next Level Games, Supercell, Remedy and more. See sponsors page for details.
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, consider reaching out at contact at dearimgui.com.
Huge thank you to all past and present supporters!
All Changes
(No known API breaking changes)
- Drag and Drop, Nav: Disabling navigation arrow keys when drag and drop is active. In the docking branch pressing arrow keys while dragging a window from a tab could trigger an assert. (#3025)
- BeginMenu: Using same ID multiple times appends content to a menu. (#1207) [@rokups]
- BeginMenu: Fixed a bug where SetNextWindowXXX data before a
BeginMenu()
would not be cleared when the menu is not open. (#3030) - InputText: Fixed password fields displaying ASCII spaces as blanks instead of using the '*' glyph. (#2149, #515)
- Selectable: Fixed honoring
style.SelectableTextAlign
with unspecified size. (#2347, #2601) - Selectable: Allow using
ImGuiSelectableFlags_SpanAllColumns
in other columns than first. (#125) - TreeNode: Made clicking on arrow with
_OpenOnArrow
toggle the open state on the Mouse Down event rather than the Mouse Down+Up sequence (this is rather standard behavior). - ColorButton: Added
ImGuiColorEditFlags_NoBorder
flag to remove the border normally enforced by default for standalone ColorButton. - Nav: Fixed interactions with
ImGuiListClipper
, so e.g. Home/End result would not clip the landing item on the landing frame. (#787) - Nav: Internals: Fixed currently focused item from ever being clipped by
ItemAdd()
. (#787) - Scrolling: Fixed scrolling centering API leading to non-integer scrolling values and initial cursor position. This would often get fixed after the fix item submission, but using the
ImGuiListClipper
as the first thing after Begin() could largely break size calculations. (#3073) - Added optional support for Unicode plane 1-16 (#2538, #2541, #2815) [@cloudwu, @samhocevar]
- Compile-time enable with
#define IMGUI_USE_WCHAR32
in imconfig.h. - More onsistent handling of unsupported code points (0xFFFD).
- Surrogate pairs are supported when submitting UTF-16 data via
io.AddInputCharacterUTF16()
, allowing for more complete CJK input. - sizeof(ImWchar) goes from 2 to 4.
IM_UNICODE_CODEPOINT_MAX
goes from 0xFFFF to 0x10FFFF. - Various structures such as
ImFont
,ImFontGlyphRangesBuilder
will use more memory, this is currently not particularly efficient.
- Compile-time enable with
- Columns: undid the change in 1.75 were
Columns()
/BeginColumns()
were preemptively limited to 64 columns with an assert. (#3037, #125) - Window: Fixed a bug with child window inheriting ItemFlags from their parent when the child window also manipulate the ItemFlags stack. (#3024) [@Stanbroek]
- Font: Fixed non-ASCII space occasionally creating unnecessary empty looking polygons.
- Misc: Added an explicit compile-time test for non-scoped
IM_ASSERT()
macros to redirect users to a solution rather than encourage people to add braces in the codebase. - Misc: Added additional checks in
EndFrame()
to verify that io.KeyXXX values have not been tampered with between NewFrame() and EndFrame(). - Misc: Made default clipboard handlers for Win32 and OSX use a buffer inside the main context instead of a static buffer, so it can be freed properly on Shutdown. (#3110)
- Misc, Freetype: Fixed support for
IMGUI_STB_RECT_PACK_FILENAME
compile time directive in imgui_freetype.cpp (matching support in the regular code path). (#3062) [@DonKult] - Metrics: Made Tools section more prominent. Showing wire-frame mesh directly hovering the
ImDrawCmd
instead of requiring to open it. Added options to disable bounding box and mesh display. Added notes on inactive/gc-ed windows. - Demo: Added black and white and color gradients to
Demo>Examples>Custom Rendering
. - CI: Added more tests on the continuous-integration server: extra warnings for Clang/GCC, building SDL+Metal example, building imgui_freetype.cpp, more compile-time imconfig.h settings: disabling obsolete functions, enabling 32-bit ImDrawIdx, enabling 32-bit ImWchar, disabling demo. [@rokups]
- Backends: OpenGL3: Fixed version check mistakenly testing for GL 4.0+ instead of 3.2+ to enable ImGuiBackendFlags_RendererHasVtxOffset, leaving 3.2 contexts without it. (#3119, #2866) [@wolfpld]
- Backends: OpenGL3: Added include support for older glbinding 2.x loader. (#3061) [@DonKult]
- Backends: Win32: Added
ImGui_ImplWin32_EnableDpiAwareness()
,ImGui_ImplWin32_GetDpiScaleForHwnd()
,ImGui_ImplWin32_GetDpiScaleForMonitor()
helpers functions (backported from the docking branch). Those functions makes it easier for example apps to support hi-dpi features without setting up a manifest. - Backends: Win32: Calling
AddInputCharacterUTF16()
from WM_CHAR message handler in order to support high-plane surrogate pairs. (#2815) [@cloudwu, @samhocevar] - Backends: SDL: Added
ImGui_ImplSDL2_InitForMetal()
for API consistency (even though the function currently does nothing). - Backends: SDL: Fixed mapping for ImGuiKey_KeyPadEnter. (#3031) [@Davido71]
- Examples: Win32+DX12: Fixed resizing main window, enabled debug layer. (#3087, #3115) [@sergeyn]
- Examples: SDL+DX11: Fixed resizing main window. (#3057) [@joeslay]
- Examples: Added SDL+Metal example application. (#3017) [@coding-jackalope]
Stay safe (and sneeze in your elbow)!
Other branches & Beta features!
New! The tables (#2957) features is still available for testing. When it stabilize we will merge it to master (expected merge in Q2 2020).
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.
Some of changes from 1.75 in 1.76 related to the docking branch (multi-viewport and docking features) include:
- Docking: Fixed assert preventing dockspace from being created instead a hidden tab. (#3101)
- Viewports: Fixed secondary viewports accidentally merging into a minimized host viewport. (#3118)
- Viewports, Docking: Added per-viewport work area system for e.g. menu-bars. Fixed
DockspaceOverViewport()
and demo code (overlay etc) accordingly. (#3035, #2889, #2474, #1542, #2109) - Viewports: Improve menu positioning in multi-monitor setups. [@rokups]
- Viewports: Software mouse cursor is also scaled by current DpiScale. (amend #939)
- Viewports: Avoid manually clipping resize grips and borders, which messes up with automation ability to locate those items. Also simpler and more standard.
- Viewports: Fix for UWP in the imgui_impl_win32.cpp IME handler. (#2895, #2892).
- Viewports: Bunch of extra of comments to facilitate setting up multi-viewports.
- Viewports, GLFW: Avoid using window positioning workaround for GLFW 3.3+ versions that have it fixed. Amend 09780b8.
Some of the changes to 1.75 to 1.76 related to the tables branch include:
- Tables: Fix sort direction arrow (#3023). Remove SortOrder from ImGuiTableSortSpecsColumn. Made sort arrow smaller.
- Tables: Added TableSetColumnWidth() api variant aimed at becoming public facing.
- Tables: Fixed advanced demo layout when clipped.
- Tables: Fix scrolling freeze bug with more than 32 columns (#3058). Fix limit of 63 columms instead of 64.
- Tables: Locking IndentX per-row so multiple columns with IndentEnabled don't get indent shearing.
- Tables: Added per-column
ImGuiTableColumnFlags_NoReorder
flag.
Some of the changes to 1.75 to 1.76 related to the range_select branch (experimental multi-select/range-select API) include:
- RangeSelect/MultiSelect: Fixed CTRL+A not testing focus scope id. Fixed CTRL+A not testing active id.
- RangeSelect/MultiSelect: Added more demo code.
- RangeSelect/MultiSelect: Fix Selectable() ambiguous return value, clarify need to use IsItemToggledSelection().
- RangeSelect/MultiSelect; Fix a race condition where releasing a keyboard modifier on the frame after a keypress would erroneously ignore the key press.
- Treenode fixes with multi-select api 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!
- If your company uses Dear ImGui, you can reach out to contact at dearimgui.com.
- 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!
Gallery
Impressive showcase in the Gallery for this release! See Gallery threads for more pictures and to post yours!
@gboisse "Working on some visual node graph editing, imgui has been amazing so far 🙂"
@ketoo "Working on the blueprint editor." https://github.com/ketoo/NoahGameFrame
Parsec https://parsecgaming.com/features/#features "Our entire UI has been built with imgui and deployed on 7 platforms (including the web/emscripten), it's an amazing thing you've done!"
Microsoft Flight Simulator SDK https://www.youtube.com/watch?v=10P21oFOxAU&feature=youtu.be&t=481
Star Citizen https://youtu.be/V0AEp9vhgx0?t=367
@giladreich "I wanted to show my progress on my personal game engine editor for the old game Knight Online, using ImGui's docking & tables branch." (more)
Particubes @aduermael: "We're using ImGui in Particubes, though it may not be easy to recognize it. 🙂 [...] In Particubes, you can script games, and that includes GUI of course. We worked on an auto layout system users will be able to use in Lua to display their own buttons, labels, etc. For games to look good on all screen factors and be enjoyable with mouse & keyboard or touch events."
@parbo "I work at Spotify, and on my hackdays I've been making a Spotify client using Dear Imgui. I'm using the docking branch, and the new table API. It uses the same C++ library as our mobile and desktop clients use, and the UI is roughly 6000 lines of code." (more)
Plotting library by @epezent (see #3067)
NVIDIA Texture Tools Exporter https://developer.nvidia.com/nvidia-texture-tools-exporter
Final Fantasy VII Remake https://www.youtube.com/watch?time_continue=675&v=DliMpiemUy8&feature=emb_title
Tracy Profiler by @wolfpld https://github.com/wolfpld/tracy