Issue #687: Add OwnedDrawData for deep cloning DrawData #721
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduce an
OwnedDrawData
struct that holds a cheaply-clonedImDrawData
structure that has been allocated and cloned on the heap. Designed for cases where you need to keep hold of the draw data so it can be evaluated at a later point in time (for instance, in multithreaded renderers where rendering the previous frame is overlapped with updating the next frame). It leveragesImDrawList::CloneOutput
for cloning the underlying draw lists, and all allocations are made via ImGui, which has a nice consequence of them being tracked in the IO object's allocation metrics. TheOwnedDrawData
struct provides an accessor to the underlyingDrawData
struct, so that it can still be passed to renderers without modifying them.As discussed in Issue #687