MCPcopy Index your code
hub / github.com/Blatko1/wgpu-text

github.com/Blatko1/wgpu-text @v0.8.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.5 ↗ · + Follow
57 symbols 88 edges 12 files 15 documented · 26% updated 53d agov0.8.5 · 2023-10-29★ 1363 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

wgpu-text

Build Status Licence crates.io Documentation

wgpu-text is a wrapper over glyph-brush for fast and easy text rendering in wgpu. It supports .otf and .ttf fonts.

Library Lorem Ipsum Showcase

This project was inspired by and is similar to wgpu_glyph but has additional features and is more straightforward. Also, there is no need to include glyph-brush in your project.

Since the crate glyph-brush is reexported and being heavily dependent on, it's recommended to go through Section docs and Section examples for better understanding of managing and adding text.

Installation

Add the following to your Cargo.toml file:

[dependencies]
wgpu_text = "0.8.5"

Usage

use wgpu_text::{glyph_brush::{Section as TextSection, Text}, BrushBuilder, TextBrush};

let brush = BrushBuilder::using_font_bytes(font).unwrap()
 /* .initial_cache_size((16_384, 16_384))) */ // use this to avoid resizing cache texture
    .build(&device, config.width, config.height, config.format);

// Directly implemented from glyph_brush.
let section = TextSection::default().add_text(Text::new("Hello World"));

// on window resize:
        brush.resize_view(config.width as f32, config.height as f32, &queue);

// window event loop:
    winit::event::Event::RedrawRequested(_) => {
        // Before are created Encoder and frame TextureView.

        // Crashes if inner cache exceeds limits.
        brush.queue(&device, &queue, vec![&section, ...]).unwrap();

        {
            let mut rpass = encoder.begin_render_pass(...);
            brush.draw(&mut rpass);
        }

        queue.submit([encoder.finish()]);
        frame.present();
    }

Examples

For more detailed examples, look through examples.

  • cargo run --example <example-name>

Run examples with --release for accurate performance.

Features

Besides basic text rendering and glyph-brush features, some features add customization:

  • builtin matrix - default matrix for orthographic projection (feel free to use it for creating custom matrices)
  • custom matrix - grants the ability to provide a custom matrix for purposes of custom view, rotation, etc. (the downside is that it applies to all rendered text)
  • depth testing - by adding a z coordinate, text can be set on top or below other text (if enabled). Watch out for the queueing order when queueing text sections. You should queue them from the furthest to the closest (according to the z coordinate, bigger the z, more further it is).

Contributing

All contributions are welcome.

Core symbols most depended-on inside this repo

Shape

Method 38
Class 9
Function 9
Enum 1

Languages

Rust100%

Modules by API surface

src/brush.rs18 symbols
src/pipeline.rs10 symbols
examples/custom_output/camera.rs8 symbols
src/cache.rs6 symbols
examples/utils.rs3 symbols
examples/custom_output/pipeline.rs3 symbols
src/error.rs2 symbols
examples/performance.rs2 symbols
examples/depth.rs2 symbols
src/lib.rs1 symbols
examples/simple.rs1 symbols
examples/custom_output/custom_output.rs1 symbols

For agents

$ claude mcp add wgpu-text \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page