Expand description
A LRU texture cache for caching many small textures in a single big texture, which is stored in GPU. This is used to cache textures that are rendered at runtime and change constantly, like glyph text rendering.
§Usage
Create a LruTextureCache
and add rects by passing mutable slice of RectEntry
to the
method cache_rects
. A stored Rect
can be queried from the
cache by passing it key
to the method get_rect
. Rect
and RectEntry
can contain
arbitrary data that could be useful for rendering from/to the texture cache.
After passing the slice to cache_rects
, it will be reorder so that it start with every rect
that was added to the cache. See LruTextureCache::cache_rects
for details.
§Example
use texture_cache::{LruTextureCache, RectEntry};
let mut rects = vec![RectEntry {
width: 20,
height: 20,
key: "my_rect",
value: (),
entry_data: (),
}];
let mut cache = LruTextureCache::new(256, 256);
let result = cache.cache_rects(&mut rects)?;
for rect in &rects[0..result.len()] {
let cached_rect = cache.get_rect(&rect.key);
// Draw the rect to the texture
}
Structs§
- LruTexture
Cache - A LRU texture cache to cache rects in a texture.
- Rect
- The stored Rect. Contains its dimensions, position and the associated value.
- Rect
Entry - The entry of a rect to be cached.