wgpu-text
is a wrapper over glyph-brush
for fast and easy text rendering in wgpu
. It accepts .otf and .ttf fonts.
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.
Some features are directly implemented from glyph-brush, so it's recommended to go through Section docs and Section examples for better understanding of managing and adding text.
Add the following to your Cargo.toml
file:
toml
[dependencies]
wgpu_text = "0.8.0"
```rust use wgpu_text::section::{Section, Text, Layout, HorizontalAlign, BrushBuilder};
let brush = BrushBuilder::usingfontbytes(font).unwrap() /* .initialcachesize((16384, 16384))) */ // use this to avoid resizing cache texture .build(&device, &config);
// Directly implemented from glyphbrush. let section = Section::default().addtext(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.process_queued(&device, &queue, vec![§ion]).unwrap();
{
let mut rpass = encoder.begin_render_pass(...);
brush.draw(&mut rpass);
}
queue.submit([encoder.finish()]);
frame.present();
}
```
For more detailed examples, look through examples.
cargo run --example <example-name>
Run examples with --release
for accurate performance.
Besides basic text rendering and glyph-brush features, some features add customization:
All contributions are welcome.