maplibre/sdf/resource/
glyph_texture.rs

1pub struct GlyphTexture {
2    pub bind_group: wgpu::BindGroup,
3}
4
5impl GlyphTexture {
6    pub fn from_device(
7        device: &wgpu::Device,
8        texture: &wgpu::Texture,
9        sampler: &wgpu::Sampler,
10        layout: &wgpu::BindGroupLayout,
11    ) -> Self {
12        let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
13            layout,
14            entries: &[
15                wgpu::BindGroupEntry {
16                    binding: 0,
17                    resource: wgpu::BindingResource::TextureView(&texture.create_view(
18                        &wgpu::TextureViewDescriptor {
19                            label: Some("Glyph texture view"),
20                            format: Some(wgpu::TextureFormat::R8Unorm),
21                            dimension: Some(wgpu::TextureViewDimension::D2),
22                            aspect: wgpu::TextureAspect::All,
23                            base_mip_level: 0,
24                            mip_level_count: None,
25                            base_array_layer: 0,
26                            array_layer_count: None,
27                        },
28                    )),
29                },
30                wgpu::BindGroupEntry {
31                    binding: 1,
32                    resource: wgpu::BindingResource::Sampler(sampler),
33                },
34            ],
35            label: Some("Glyph texture bind group"),
36        });
37        Self { bind_group }
38    }
39}