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.


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.


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


A LRU texture cache to cache rects in a texture.

The stored Rect. Contains its dimensions, position and the associated value.

The entry of a rect to be cached.


Reason of cache failure.

Successful method of caching of the queue, returned from cache_rects.