pub struct DrawData {
pub total_idx_count: i32,
pub total_vtx_count: i32,
pub display_pos: [f32; 2],
pub display_size: [f32; 2],
pub framebuffer_scale: [f32; 2],
/* private fields */
}Expand description
All draw data to render a Dear ImGui frame.
Fields§
§total_idx_count: i32For convenience, sum of all draw list index buffer sizes.
total_vtx_count: i32For convenience, sum of all draw list vertex buffer sizes.
display_pos: [f32; 2]Upper-left position of the viewport to render.
(= upper-left corner of the orthogonal projection matrix to use)
display_size: [f32; 2]Size of the viewport to render.
(= display_pos + display_size == lower-right corner of the orthogonal matrix to use)
framebuffer_scale: [f32; 2]Amount of pixels for each unit of display_size.
Based on io.display_frame_buffer_scale. Typically [1.0, 1.0] on normal displays, and [2.0, 2.0] on Retina displays, but fractional values are also possible.
Implementations§
Source§impl DrawData
impl DrawData
Sourcepub fn valid(&self) -> bool
pub fn valid(&self) -> bool
Check if the draw data is valid
Draw data is only valid after Context::render() is called and before
the next Context::new_frame() is called.
Sourcepub fn draw_lists(&self) -> DrawListIterator<'_> ⓘ
pub fn draw_lists(&self) -> DrawListIterator<'_> ⓘ
Returns an iterator over the draw lists included in the draw data.
Sourcepub fn draw_lists_count(&self) -> usize
pub fn draw_lists_count(&self) -> usize
Returns the number of draw lists included in the draw data.
Sourcepub fn textures(&self) -> TextureIterator<'_> ⓘ
pub fn textures(&self) -> TextureIterator<'_> ⓘ
Returns an iterator over the textures that need to be updated
This is used by renderer backends to process texture creation, updates, and destruction.
Each item is an ImTextureData* carrying a Status which can be one of:
OK: nothing to do.WantCreate: create a GPU texture and upload all pixels.WantUpdates: upload specifiedUpdateRectregions.WantDestroy: destroy the GPU texture (may be delayed until unused). Most of the time this list has only 1 texture and it doesn’t need any update.
Sourcepub fn textures_count(&self) -> usize
pub fn textures_count(&self) -> usize
Returns the number of textures in the texture list
Sourcepub fn texture(&self, index: usize) -> Option<&TextureData>
pub fn texture(&self, index: usize) -> Option<&TextureData>
Get a specific texture by index
Returns None if the index is out of bounds or no textures are available.
Sourcepub fn texture_mut(&mut self, index: usize) -> Option<&mut TextureData>
pub fn texture_mut(&mut self, index: usize) -> Option<&mut TextureData>
Get a mutable reference to a specific texture by index
Returns None if the index is out of bounds or no textures are available.
Sourcepub fn display_pos(&self) -> [f32; 2]
pub fn display_pos(&self) -> [f32; 2]
Get the display position as an array
Sourcepub fn display_size(&self) -> [f32; 2]
pub fn display_size(&self) -> [f32; 2]
Get the display size as an array
Sourcepub fn framebuffer_scale(&self) -> [f32; 2]
pub fn framebuffer_scale(&self) -> [f32; 2]
Get the framebuffer scale as an array
Sourcepub fn deindex_all_buffers(&mut self)
pub fn deindex_all_buffers(&mut self)
Converts all buffers from indexed to non-indexed, in case you cannot render indexed buffers
This is slow and most likely a waste of resources. Always prefer indexed rendering!
Sourcepub fn scale_clip_rects(&mut self, fb_scale: [f32; 2])
pub fn scale_clip_rects(&mut self, fb_scale: [f32; 2])
Scales the clip rect of each draw command
Can be used if your final output buffer is at a different scale than Dear ImGui expects, or if there is a difference between your window resolution and framebuffer resolution.