diff --git a/Cargo.lock b/Cargo.lock index 5348780a52b..b3c897f99a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -936,6 +936,8 @@ dependencies = [ "glutin", "image", "memoffset", + "wasm-bindgen", + "web-sys", ] [[package]] @@ -943,6 +945,7 @@ name = "egui_web" version = "0.15.0" dependencies = [ "egui", + "egui_glow", "epi", "js-sys", "ron", diff --git a/eframe/Cargo.toml b/eframe/Cargo.toml index 87e7a7cd56b..66185b3b588 100644 --- a/eframe/Cargo.toml +++ b/eframe/Cargo.toml @@ -30,7 +30,7 @@ epi = { version = "0.15.0", path = "../epi" } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] egui-winit = { version = "0.15.0", path = "../egui-winit", default-features = false } egui_glium = { version = "0.15.0", path = "../egui_glium", default-features = false, features = ["clipboard", "epi", "links"], optional = true } -egui_glow = { version = "0.15.0", path = "../egui_glow", default-features = false, features = ["clipboard", "epi", "links"], optional = true } +egui_glow = { version = "0.15.0", path = "../egui_glow", default-features = false, features = ["clipboard", "epi", "links", "winit"], optional = true } # web: [target.'cfg(target_arch = "wasm32")'.dependencies] diff --git a/egui_glow/Cargo.toml b/egui_glow/Cargo.toml index 6e18afefffd..4994b570522 100644 --- a/egui_glow/Cargo.toml +++ b/egui_glow/Cargo.toml @@ -68,4 +68,4 @@ screen_reader = ["egui-winit/screen_reader"] # enable glutin/winit integration. # if you want to use glow painter on web disable it. # if disabled reduce crate size and build time. -winit= ["egui-winit","glutin"] \ No newline at end of file +winit = ["egui-winit", "glutin"] diff --git a/egui_glow/src/lib.rs b/egui_glow/src/lib.rs index 4f10e579efb..9b759c96cbb 100644 --- a/egui_glow/src/lib.rs +++ b/egui_glow/src/lib.rs @@ -98,7 +98,9 @@ mod shader_version; mod vao_emulate; #[cfg(not(target_arch = "wasm32"))] +#[cfg(feature = "egui_winit")] pub use egui_winit; + #[cfg(all(feature = "epi", feature = "winit"))] pub use epi_backend::{run, NativeOptions}; diff --git a/egui_glow/src/painter.rs b/egui_glow/src/painter.rs index f92be73182a..d10765722af 100644 --- a/egui_glow/src/painter.rs +++ b/egui_glow/src/painter.rs @@ -3,7 +3,6 @@ use egui::{ emath::Rect, epaint::{Color32, Mesh, Vertex}, - TextureId, }; pub use glow::Context; @@ -540,7 +539,7 @@ impl Painter { debug_assert!(!self.destroyed, "the egui glow has already been destroyed!"); } } -// ported from egui_web + pub fn clear(gl: &glow::Context, dimension: [u32; 2], clear_color: egui::Rgba) { unsafe { gl.disable(glow::SCISSOR_TEST); @@ -557,6 +556,7 @@ pub fn clear(gl: &glow::Context, dimension: [u32; 2], clear_color: egui::Rgba) { gl.clear(glow::COLOR_BUFFER_BIT); } } + impl Drop for Painter { fn drop(&mut self) { debug_assert!( @@ -566,6 +566,7 @@ impl Drop for Painter { } } +#[cfg(feature = "epi")] impl epi::TextureAllocator for Painter { fn alloc_srgba_premultiplied( &mut self, @@ -582,14 +583,15 @@ impl epi::TextureAllocator for Painter { } } +#[cfg(feature = "epi")] impl epi::NativeTexture for Painter { type Texture = glow::Texture; - fn register_native_texture(&mut self, native: Self::Texture) -> TextureId { + fn register_native_texture(&mut self, native: Self::Texture) -> egui::TextureId { self.register_glow_texture(native) } - fn replace_native_texture(&mut self, id: TextureId, replacing: Self::Texture) { + fn replace_native_texture(&mut self, id: egui::TextureId, replacing: Self::Texture) { if let egui::TextureId::User(id) = id { if let Some(Some(user_texture)) = self.user_textures.get_mut(id as usize) { *user_texture = UserTexture { diff --git a/egui_web/Cargo.toml b/egui_web/Cargo.toml index 3f1322c3d0c..1fa00e67941 100644 --- a/egui_web/Cargo.toml +++ b/egui_web/Cargo.toml @@ -43,9 +43,10 @@ default = ["default_fonts"] # If set, egui will use `include_bytes!` to bundle some fonts. # If you plan on specifying your own fonts you may disable this feature. default_fonts = ["egui/default_fonts"] +# Use glow as the renderer +glow = ["egui_glow", "egui_glow/epi"] persistence = ["egui/persistence", "ron", "serde"] screen_reader = ["tts"] # experimental -glow =["egui_glow","egui_glow/epi"] [dependencies.web-sys] version = "0.3.52"