summaryrefslogtreecommitdiff
path: root/webhogg/wasm/src/context/graphics.rs
diff options
context:
space:
mode:
Diffstat (limited to 'webhogg/wasm/src/context/graphics.rs')
-rw-r--r--webhogg/wasm/src/context/graphics.rs18
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 {
})
}