diff options
Diffstat (limited to 'webhogg/wasm/src/context/graphics.rs')
-rw-r--r-- | webhogg/wasm/src/context/graphics.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/webhogg/wasm/src/context/graphics.rs b/webhogg/wasm/src/context/graphics.rs index b94441d..fa37e39 100644 --- a/webhogg/wasm/src/context/graphics.rs +++ b/webhogg/wasm/src/context/graphics.rs @@ -1,10 +1,12 @@ use log::*; use crate::error::WasmError; use wasm_bindgen::JsCast; -use web_sys::WebGl2RenderingContext as Gl; +use web_sys::WebGl2RenderingContext as GlContext; + +use super::webgl::{Color4, WebGl2}; pub struct GraphicsContext { - gl: Gl, + gl: WebGl2, frame_nr: u64, } @@ -16,26 +18,27 @@ impl GraphicsContext { .ok_or_else(|| WasmError::WebGl2ContextCreation( format!("context cration failed: getContext returned nothing")))?; let context = context - .dyn_into::<Gl>() + .dyn_into::<GlContext>() .map_err(|_| WasmError::WebGl2ContextCreation( format!("context object is not a context")))?; + + let gl = WebGl2::from_context(context); Ok(Self { - gl: context, - frame_nr: 0, + gl, frame_nr: 0, }) } pub fn update(&mut self) -> Result<(), WasmError> { let light = 0.5; + let speed = 60.0; - let a = (self.frame_nr as f32) / 60.0; + let a = (self.frame_nr as f32) / speed; let a = f32::abs(f32::sin(a)); let b = f32::abs(f32::cos(a)); let (a, b) = (a * light, b * light); - self.gl.clear_color(a, light - a, b, 1.0); - self.gl.clear(Gl::COLOR_BUFFER_BIT); + self.gl.clear(Color4::new(a, light - a, b, 1.0)); self.frame_nr += 1; |