1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-26 22:53:14 -04:00

add texture registering function

This commit is contained in:
t18b219k
2021-03-11 22:13:21 +09:00
parent 269bcdfce3
commit f9b4db12c5
5 changed files with 27 additions and 7 deletions

Binary file not shown.

View File

@@ -250,7 +250,17 @@ impl Painter {
self.user_textures.push(Some(Default::default())); self.user_textures.push(Some(Default::default()));
id id
} }
/// register glium texture as egui texture
/// Usable for render to image rectangle
pub fn register_glium_texture(&mut self,texture:glium::texture::SrgbTexture2d)->egui::TextureId{
let id= self.alloc_user_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{ pixels: vec![], gl_texture: Some(texture) }
}
}
id
}
pub fn set_user_texture( pub fn set_user_texture(
&mut self, &mut self,
id: egui::TextureId, id: egui::TextureId,

View File

@@ -1,4 +1,5 @@
use wasm_bindgen::prelude::JsValue; use wasm_bindgen::prelude::JsValue;
use web_sys::WebGlTexture;
pub trait Painter { pub trait Painter {
fn as_tex_allocator(&mut self) -> &mut dyn epi::TextureAllocator; fn as_tex_allocator(&mut self) -> &mut dyn epi::TextureAllocator;

View File

@@ -4,10 +4,7 @@ use {
web_sys::{WebGlBuffer, WebGlProgram, WebGlRenderingContext, WebGlShader, WebGlTexture}, web_sys::{WebGlBuffer, WebGlProgram, WebGlRenderingContext, WebGlShader, WebGlTexture},
}; };
use egui::{ use egui::{emath::{clamp, vec2}, epaint::{Color32, Texture}};
emath::{clamp, vec2},
epaint::{Color32, Texture},
};
type Gl = WebGlRenderingContext; type Gl = WebGlRenderingContext;
@@ -190,7 +187,13 @@ impl WebGlPainter {
} }
} }
} }
pub fn register_webgl_texture(&mut self, texture:WebGlTexture) -> egui::TextureId {
let id= self.alloc_user_texture_index();
if let Some(Some(user_texture))=self.user_textures.get_mut(id){
*user_texture=UserTexture{ size: (0, 0), pixels: vec![], gl_texture: Some(texture) }
}
egui::TextureId::User(id as u64)
}
fn paint_mesh(&self, mesh: &egui::epaint::Mesh16) -> Result<(), JsValue> { fn paint_mesh(&self, mesh: &egui::epaint::Mesh16) -> Result<(), JsValue> {
debug_assert!(mesh.is_valid()); debug_assert!(mesh.is_valid());

View File

@@ -192,7 +192,13 @@ impl WebGl2Painter {
} }
} }
} }
pub fn register_webgl_texture(&mut self, texture:WebGlTexture) ->egui::TextureId {
let id= self.alloc_user_texture_index();
if let Some(Some(user_texture))=self.user_textures.get_mut(id){
*user_texture=UserTexture{ size: (0, 0), pixels: vec![], gl_texture: Some(texture) }
}
egui::TextureId::User(id as u64)
}
fn paint_mesh(&self, mesh: &egui::epaint::Mesh16) -> Result<(), JsValue> { fn paint_mesh(&self, mesh: &egui::epaint::Mesh16) -> Result<(), JsValue> {
debug_assert!(mesh.is_valid()); debug_assert!(mesh.is_valid());