dear_imgui_wgpu/renderer/
external_textures.rs1use super::WgpuRenderer;
4
5impl WgpuRenderer {
6 pub fn register_external_texture(
12 &mut self,
13 texture: &wgpu::Texture,
14 view: &wgpu::TextureView,
15 ) -> u64 {
16 self.texture_manager
17 .register_texture(crate::WgpuTexture::new(texture.clone(), view.clone()))
18 }
19
20 pub fn register_external_texture_with_sampler(
25 &mut self,
26 texture: &wgpu::Texture,
27 view: &wgpu::TextureView,
28 sampler: &wgpu::Sampler,
29 ) -> u64 {
30 let id = self
31 .texture_manager
32 .register_texture(crate::WgpuTexture::new(texture.clone(), view.clone()));
33 self.texture_manager
34 .set_custom_sampler_for_texture(id, sampler.clone());
35 id
36 }
37
38 pub fn update_external_texture_view(
42 &mut self,
43 texture_id: u64,
44 view: &wgpu::TextureView,
45 ) -> bool {
46 if let Some(mut tex) = self.texture_manager.remove_texture(texture_id) {
47 tex.texture_view = view.clone();
48 self.texture_manager.insert_texture_with_id(texture_id, tex);
49 if let Some(backend) = self.backend_data.as_mut() {
50 backend.render_resources.remove_image_bind_group(texture_id);
51 }
52 true
53 } else {
54 false
55 }
56 }
57
58 pub fn update_external_texture_sampler(
62 &mut self,
63 texture_id: u64,
64 sampler: &wgpu::Sampler,
65 ) -> bool {
66 self.texture_manager
67 .update_custom_sampler_for_texture(texture_id, sampler.clone())
68 }
69
70 pub fn unregister_texture(&mut self, texture_id: u64) {
72 self.texture_manager.remove_texture(texture_id);
73 self.texture_manager
74 .clear_custom_sampler_for_texture(texture_id);
75 if let Some(backend) = self.backend_data.as_mut() {
76 backend.render_resources.remove_image_bind_group(texture_id);
77 }
78 }
79}