mirror of
https://github.com/emilk/egui.git
synced 2026-08-29 04:40:03 -04:00
Add TextureOptions::wrap_mode (#3954)
Exposes support in both glow and wgpu for texture wrap modes This would be breaking for manual creations of TextureOptions but would work with the current TextureOptions::NEAREST and LINEAR without change, keeping those clamp to edge I wasn't sure how best to expose the options to the user and added consts for LINEAR_REPEAT LINEAR_MIRRORED_REPEAT NEAREST_REPEAT NEAREST_MIRRORED_REPEAT This does not include wrap mode clamp to border as it worked fine with glow but with wgpu it panics due to Features Features(ADDRESS_MODE_CLAMP_TO_BORDER) are required but not enabled on the device, and I thought it was probably best not to try to enable that feature, but happy to include that functionality also if that is okay to be toggled  --------- Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
@@ -34,6 +34,20 @@ impl TextureFilterExt for egui::TextureFilter {
|
||||
}
|
||||
}
|
||||
|
||||
trait TextureWrapModeExt {
|
||||
fn glow_code(&self) -> u32;
|
||||
}
|
||||
|
||||
impl TextureWrapModeExt for egui::TextureWrapMode {
|
||||
fn glow_code(&self) -> u32 {
|
||||
match self {
|
||||
Self::ClampToEdge => glow::CLAMP_TO_EDGE,
|
||||
Self::Repeat => glow::REPEAT,
|
||||
Self::MirroredRepeat => glow::MIRRORED_REPEAT,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct PainterError(String);
|
||||
|
||||
@@ -555,12 +569,12 @@ impl Painter {
|
||||
self.gl.tex_parameter_i32(
|
||||
glow::TEXTURE_2D,
|
||||
glow::TEXTURE_WRAP_S,
|
||||
glow::CLAMP_TO_EDGE as i32,
|
||||
options.wrap_mode.glow_code() as i32,
|
||||
);
|
||||
self.gl.tex_parameter_i32(
|
||||
glow::TEXTURE_2D,
|
||||
glow::TEXTURE_WRAP_T,
|
||||
glow::CLAMP_TO_EDGE as i32,
|
||||
options.wrap_mode.glow_code() as i32,
|
||||
);
|
||||
check_for_gl_error!(&self.gl, "tex_parameter");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user