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.rs19
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;