diff options
Diffstat (limited to 'webhogg/wasm/src/context/graphics.rs')
-rw-r--r-- | webhogg/wasm/src/context/graphics.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/webhogg/wasm/src/context/graphics.rs b/webhogg/wasm/src/context/graphics.rs index 57955d0..3476e5d 100644 --- a/webhogg/wasm/src/context/graphics.rs +++ b/webhogg/wasm/src/context/graphics.rs @@ -1,10 +1,26 @@ +use log::*; use crate::error::WasmError; +use wasm_bindgen::JsCast; +use web_sys::WebGl2RenderingContext as Gl; pub struct GraphicsContext { } impl GraphicsContext { - pub fn from_canvas() -> Result<Self, WasmError> { + pub fn from_canvas(canvas: web_sys::OffscreenCanvas) -> Result<Self, WasmError> { + let context = canvas.get_context("webgl2") + .map_err(|_| WasmError::WebGl2ContextCreation( + format!("context cration failed: getContext returned an exception")))? + .ok_or_else(|| WasmError::WebGl2ContextCreation( + format!("context cration failed: getContext returned nothing")))?; + let context = context + .dyn_into::<Gl>() + .map_err(|_| WasmError::WebGl2ContextCreation( + format!("context object is not a context")))?; + + //context.clear(Gl::COLOR_BUFFER_BIT); + //context.clear_color(0.6, 0.0, 0.6, 1.0); + Ok(Self { }) } |