summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornatrixaeria <janng@gmx.de>2019-12-21 20:45:49 +0100
committernatrixaeria <janng@gmx.de>2019-12-21 20:45:49 +0100
commit3c21251fec1a1ce4cee42337e727cc8dadfd9563 (patch)
treec5011e4cc4937b8b616e2b659ce4d6aff43be899
parent5f74e093a4679cdc0fe9fa42822a14fecc7b1cbb (diff)
Draw violet background
-rw-r--r--WebInterface/wasm/asm-paint/src/canvas.rs16
-rw-r--r--WebInterface/wasm/asm-paint/src/shader.rs30
2 files changed, 30 insertions, 16 deletions
diff --git a/WebInterface/wasm/asm-paint/src/canvas.rs b/WebInterface/wasm/asm-paint/src/canvas.rs
index 54691e8..400e258 100644
--- a/WebInterface/wasm/asm-paint/src/canvas.rs
+++ b/WebInterface/wasm/asm-paint/src/canvas.rs
@@ -25,18 +25,10 @@ impl Canvas {
}
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))
+ self.shaders.init(&self.ctx).map_err(|_|())?;
+ self.ctx.clear_color(1.0, 0.2, 1.0, 1.0);
+ self.ctx.clear(WebGl2RenderingContext::COLOR_BUFFER_BIT);
+ Ok(())
}
}
diff --git a/WebInterface/wasm/asm-paint/src/shader.rs b/WebInterface/wasm/asm-paint/src/shader.rs
index 3311b6a..2823cd4 100644
--- a/WebInterface/wasm/asm-paint/src/shader.rs
+++ b/WebInterface/wasm/asm-paint/src/shader.rs
@@ -18,16 +18,18 @@ void main() {
pub struct Shaders {
program: Option<WebGlProgram>,
+ pos_loc: i32,
}
impl Shaders {
pub fn new() -> Self {
Self {
program: None,
+ pos_loc: -1
}
}
- pub fn create_program(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
+ fn create_program(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
self.program = Some(ctx.create_program().ok_or("could not create program id")?);
Ok(())
}
@@ -48,15 +50,15 @@ impl Shaders {
}
}
- pub fn create_vertex_shader(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
+ fn create_vertex_shader(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
self.create_shader(ctx, WebGl2RenderingContext::VERTEX_SHADER, VERTEX_SHADER)
}
- pub fn create_fragment_shader(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
+ fn create_fragment_shader(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
self.create_shader(ctx, WebGl2RenderingContext::FRAGMENT_SHADER, FRAGMENT_SHADER)
}
- pub fn compile(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
+ fn compile(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
let program = self.program.as_ref().ok_or("could not find created program")?;
ctx.link_program(program);
let status = ctx.get_program_parameter(program, WebGl2RenderingContext::LINK_STATUS);
@@ -67,6 +69,26 @@ impl Shaders {
}
}
+ pub fn init(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
+ debug!("create program");
+ self.create_program(ctx)
+ .map_err(|e| { error!("webgl2 create program: {}", e); e})?;
+ debug!("create vertex shader");
+ self.create_vertex_shader(ctx)
+ .map_err(|e| { error!("webgl2 create vertex shader: {}", e); e})?;
+ debug!("create fragment shader");
+ self.create_fragment_shader(ctx)
+ .map_err(|e| { error!("webgl2 create fragment shader: {}", e); e})?;
+ debug!("compile shader program");
+ self.compile(ctx)
+ .map_err(|e| { error!("webgl2 shader: {}", e); e})?;
+ let program = self.program.as_ref().ok_or("could not find created program")?;
+ self.pos_loc = ctx.get_attrib_location(program, "pos");
+ trace!("got attrib location 'pos'({})", self.pos_loc);
+ info!("initialised shader program");
+ Ok(())
+ }
+
pub fn remove(&mut self, ctx: &WebGl2RenderingContext) {
ctx.delete_program(self.program.as_ref())
}