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