28 个版本

0.7.9 2024 年 6 月 22 日
0.7.8 2023 年 9 月 29 日
0.7.7 2023 年 2 月 24 日
0.7.5 2022 年 8 月 19 日
0.2.2 2018 年 11 月 9 日

#3渲染

Download history 5250/week @ 2024-05-03 5026/week @ 2024-05-10 5974/week @ 2024-05-17 5634/week @ 2024-05-24 5888/week @ 2024-05-31 3931/week @ 2024-06-07 5095/week @ 2024-06-14 5608/week @ 2024-06-21 3271/week @ 2024-06-28 2846/week @ 2024-07-05 4862/week @ 2024-07-12 5219/week @ 2024-07-19 4833/week @ 2024-07-26 4332/week @ 2024-08-02 7983/week @ 2024-08-09 5275/week @ 2024-08-16

23,367 每月下载量
164 个crate(29 个直接) 中使用

Apache-2.0

235KB
4.5K SLoC

glyph_brush crates.io 文档

使用 ab_glyph 的快速缓存文本渲染库。提供与渲染 API 无关的光栅化和绘制缓存逻辑。

广泛使用缓存以优化帧性能。

  • GPU 纹理缓存逻辑以动态维护渲染字符的 GPU 纹理。
  • 缓存字符布局输出,以避免在连续帧上重复相同的文本渲染的成本。
  • 在更改后重用布局以优化类似的布局计算。
  • 按部分缓存顶点生成,并在更改时重新组装成总顶点数组。
  • 当在连续帧上渲染相同的文本时,避免任何布局或顶点计算。

该crate旨在易于封装以创建方便的特定于渲染 API 的版本,例如 gfx-glyph

use glyph_brush::{ab_glyph::FontArc, BrushAction, BrushError, GlyphBrushBuilder, Section, Text};

let dejavu = FontArc::try_from_slice(include_bytes!("../../fonts/DejaVuSans.ttf"))?;
let mut glyph_brush = GlyphBrushBuilder::using_font(dejavu).build();

glyph_brush.queue(Section::default().add_text(Text::new("Hello glyph_brush")));
glyph_brush.queue(some_other_section);

match glyph_brush.process_queued(
    |rect, tex_data| update_texture(rect, tex_data),
    |vertex_data| into_vertex(vertex_data),
) {
    Ok(BrushAction::Draw(vertices)) => {
        // Draw new vertices.
    }
    Ok(BrushAction::ReDraw) => {
        // Re-draw last frame's vertices unmodified.
    }
    Err(BrushError::TextureTooSmall { suggested }) => {
        // Enlarge texture + glyph_brush texture cache and retry.
    }
}

示例

请参阅以下内容

  • cargo运行 --示例opengl --发布

依赖项

~2MB
~36K SLoC