summaryrefslogtreecommitdiff
path: root/WebInterface/wasm/asm-paint/src/canvas.rs
diff options
context:
space:
mode:
Diffstat (limited to 'WebInterface/wasm/asm-paint/src/canvas.rs')
-rw-r--r--WebInterface/wasm/asm-paint/src/canvas.rs20
1 files changed, 17 insertions, 3 deletions
diff --git a/WebInterface/wasm/asm-paint/src/canvas.rs b/WebInterface/wasm/asm-paint/src/canvas.rs
index 1956be0..ddf6d51 100644
--- a/WebInterface/wasm/asm-paint/src/canvas.rs
+++ b/WebInterface/wasm/asm-paint/src/canvas.rs
@@ -1,10 +1,12 @@
use web_sys;
use web_sys::{WebGl2RenderingContext};
use wasm_bindgen::JsCast;
+use crate::shader::Shaders;
pub struct Canvas {
element: web_sys::HtmlCanvasElement,
ctx: WebGl2RenderingContext,
+ shaders: Shaders,
}
impl Canvas {
@@ -17,11 +19,23 @@ impl Canvas {
.dyn_into::<WebGl2RenderingContext>().ok()?;
info!("created webgl2 context successfully");
Some(Self {
- element, ctx
+ element, ctx,
+ shaders: Shaders::new(),
})
}
- pub fn render(&self) {
- info!("do a barrel roll");
+ pub fn init(&mut self) -> Result<(), ()> {
+ debug!("create program");
+ self.shaders.create_program(&self.ctx)
+ .map_err(|e| error!("webgl2 create program: {}", e))?;
+ debug!("create vertex shader");
+ self.shaders.create_vertex_shader(&self.ctx)
+ .map_err(|e| error!("webgl2 create vertex shader: {}", e))?;
+ debug!("create fragment shader");
+ self.shaders.create_fragment_shader(&self.ctx)
+ .map_err(|e| error!("webgl2 create fragment shader: {}", e))?;
+ debug!("compile shader program");
+ self.shaders.compile(&self.ctx)
+ .map_err(|e| error!("webgl2 shader: {}", e))
}
}