egui-wgpu: port over missing update_wgpu_texture methods from egui_wgpu_backend
(#1981)
* add back missing update_egui_texture_from_wgpu_texture methods to renderer module * clippy
This commit is contained in:
parent
ac4d75e9b4
commit
153524023f
1 changed files with 71 additions and 0 deletions
|
@ -606,6 +606,35 @@ impl RenderPass {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Registers a `wgpu::Texture` with an existing `egui::TextureId`.
|
||||||
|
///
|
||||||
|
/// This enables applications to reuse `TextureId`s.
|
||||||
|
pub fn update_egui_texture_from_wgpu_texture(
|
||||||
|
&mut self,
|
||||||
|
device: &wgpu::Device,
|
||||||
|
texture: &wgpu::TextureView,
|
||||||
|
texture_filter: wgpu::FilterMode,
|
||||||
|
id: egui::TextureId,
|
||||||
|
) {
|
||||||
|
self.update_egui_texture_from_wgpu_texture_with_sampler_options(
|
||||||
|
device,
|
||||||
|
texture,
|
||||||
|
wgpu::SamplerDescriptor {
|
||||||
|
label: Some(
|
||||||
|
format!(
|
||||||
|
"egui_user_image_{}_texture_sampler",
|
||||||
|
self.next_user_texture_id
|
||||||
|
)
|
||||||
|
.as_str(),
|
||||||
|
),
|
||||||
|
mag_filter: texture_filter,
|
||||||
|
min_filter: texture_filter,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
id,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// Registers a `wgpu::Texture` with a `egui::TextureId` while also accepting custom
|
/// Registers a `wgpu::Texture` with a `egui::TextureId` while also accepting custom
|
||||||
/// `wgpu::SamplerDescriptor` options.
|
/// `wgpu::SamplerDescriptor` options.
|
||||||
///
|
///
|
||||||
|
@ -655,6 +684,48 @@ impl RenderPass {
|
||||||
id
|
id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Registers a `wgpu::Texture` with an existing `egui::TextureId` while also accepting custom
|
||||||
|
/// `wgpu::SamplerDescriptor` options.
|
||||||
|
///
|
||||||
|
/// This allows applications to reuse `TextureId`s created with custom sampler options.
|
||||||
|
#[allow(clippy::needless_pass_by_value)] // false positive
|
||||||
|
pub fn update_egui_texture_from_wgpu_texture_with_sampler_options(
|
||||||
|
&mut self,
|
||||||
|
device: &wgpu::Device,
|
||||||
|
texture: &wgpu::TextureView,
|
||||||
|
sampler_descriptor: wgpu::SamplerDescriptor<'_>,
|
||||||
|
id: egui::TextureId,
|
||||||
|
) {
|
||||||
|
let (_user_texture, user_texture_binding) = self
|
||||||
|
.textures
|
||||||
|
.get_mut(&id)
|
||||||
|
.expect("Tried to update a texture that has not been allocated yet.");
|
||||||
|
|
||||||
|
let sampler = device.create_sampler(&wgpu::SamplerDescriptor {
|
||||||
|
compare: None,
|
||||||
|
..sampler_descriptor
|
||||||
|
});
|
||||||
|
|
||||||
|
let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
|
||||||
|
label: Some(
|
||||||
|
format!("egui_user_{}_texture_bind_group", self.next_user_texture_id).as_str(),
|
||||||
|
),
|
||||||
|
layout: &self.texture_bind_group_layout,
|
||||||
|
entries: &[
|
||||||
|
wgpu::BindGroupEntry {
|
||||||
|
binding: 0,
|
||||||
|
resource: wgpu::BindingResource::TextureView(texture),
|
||||||
|
},
|
||||||
|
wgpu::BindGroupEntry {
|
||||||
|
binding: 1,
|
||||||
|
resource: wgpu::BindingResource::Sampler(&sampler),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
*user_texture_binding = bind_group;
|
||||||
|
}
|
||||||
|
|
||||||
/// Uploads the uniform, vertex and index data used by the render pass.
|
/// Uploads the uniform, vertex and index data used by the render pass.
|
||||||
/// Should be called before `execute()`.
|
/// Should be called before `execute()`.
|
||||||
pub fn update_buffers(
|
pub fn update_buffers(
|
||||||
|
|
Loading…
Reference in a new issue