diff options
author | natrixaeria <janng@gmx.de> | 2019-06-13 01:34:35 +0200 |
---|---|---|
committer | natrixaeria <janng@gmx.de> | 2019-06-13 01:34:35 +0200 |
commit | 5de862b4d175578ed67e177d482ac31bf811d486 (patch) | |
tree | 4a242157e34abf92f572b8f0b2135db0f44fc17e /webhogg/wasm/src/context/graphics.rs | |
parent | c3fdf122bd874bd0aedf90eff0d57cc440fc6421 (diff) |
Create a WebGl2 context
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 { }) } |