webgl-tools

diff glass.js @ 2:9eb4c37ce415

- added set_uniform functions in glass.js - added normal matrix uniform in sanegl.js
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 16 Jun 2011 07:13:20 +0300
parents c52b17d412f3
children 56ae66e32998
line diff
     1.1 --- a/glass.js	Wed Jun 15 20:45:50 2011 +0300
     1.2 +++ b/glass.js	Thu Jun 16 07:13:20 2011 +0300
     1.3 @@ -23,6 +23,8 @@
     1.4  var glass_start_time = 0;
     1.5  
     1.6  var glass_cb_disp = null;
     1.7 +var glass_cb_mouse = null;
     1.8 +var glass_cb_motion = null;
     1.9  
    1.10  function glass_init(canv_id, cons_id)
    1.11  {
    1.12 @@ -55,6 +57,21 @@
    1.13  
    1.14  function glass_start()
    1.15  {
    1.16 +	if(glass_cb_motion) {
    1.17 +		canvas.onmousemove = function(ev) {
    1.18 +			glass_cb_motion(ev.clientX, ev.clientY);
    1.19 +		}
    1.20 +	}
    1.21 +
    1.22 +	if(glass_cb_mouse) {
    1.23 +		canvas.onmousedown = function(ev) {
    1.24 +			glass_cb_mouse(ev.button, true, ev.clientX, ev.clientY);
    1.25 +		}
    1.26 +		canvas.onmouseup = function(ev) {
    1.27 +			glass_cb_mouse(ev.button, false, ev.clientX, ev.clientY);
    1.28 +		}
    1.29 +	}
    1.30 +
    1.31  	glass_start_time = get_msec();
    1.32  	glass_redraw();
    1.33  }
    1.34 @@ -64,6 +81,17 @@
    1.35  	glass_cb_disp = func;
    1.36  }
    1.37  
    1.38 +function glass_mouse_func(func)
    1.39 +{
    1.40 +	glass_cb_mouse = func;
    1.41 +}
    1.42 +
    1.43 +function glass_motion_func(func)
    1.44 +{
    1.45 +	glass_cb_motion = func;
    1.46 +}
    1.47 +
    1.48 +
    1.49  function glass_redraw()
    1.50  {
    1.51  	var msec = get_msec();
    1.52 @@ -123,17 +151,20 @@
    1.53  	xhr.send(null);
    1.54  
    1.55  	var src = xhr.responseText;
    1.56 -	return create_shader(src, type);
    1.57 +	return create_shader(src, type, name);
    1.58  }
    1.59  
    1.60 -function create_shader(src, type)
    1.61 +function create_shader(src, type, name)
    1.62  {
    1.63  	var sdr = gl.createShader(type);
    1.64  	gl.shaderSource(sdr, src);
    1.65  	gl.compileShader(sdr);
    1.66  
    1.67  	if(!gl.getShaderParameter(sdr, gl.COMPILE_STATUS)) {
    1.68 -		logmsg("failed to compile shader: " + src + ": " + gl.getShaderInfoLog(sdr));
    1.69 +		if(!name) {
    1.70 +			name = "<unnamed>";
    1.71 +		}
    1.72 +		logmsg("failed to compile shader: " + name + ": " + gl.getShaderInfoLog(sdr));
    1.73  		return null;
    1.74  	}
    1.75  	return sdr;
    1.76 @@ -166,6 +197,51 @@
    1.77  	return prog;
    1.78  }
    1.79  
    1.80 +function set_uniform1f(p, name, v)
    1.81 +{
    1.82 +	var loc = gl.getUniformLocation(p, name);
    1.83 +	if(loc != -1) {
    1.84 +		gl.useProgram(p);
    1.85 +		gl.uniform1f(loc, v);
    1.86 +	}
    1.87 +}
    1.88 +
    1.89 +function set_uniform2f(p, name, x, y)
    1.90 +{
    1.91 +	var loc = gl.getUniformLocation(p, name);
    1.92 +	if(loc != -1) {
    1.93 +		gl.useProgram(p);
    1.94 +		gl.uniform2f(loc, x, y);
    1.95 +	}
    1.96 +}
    1.97 +
    1.98 +function set_uniform3f(p, name, x, y, z)
    1.99 +{
   1.100 +	var loc = gl.getUniformLocation(p, name);
   1.101 +	if(loc != -1) {
   1.102 +		gl.useProgram(p);
   1.103 +		gl.uniform3f(loc, x, y, z);
   1.104 +	}
   1.105 +}
   1.106 +
   1.107 +function set_uniform4f(p, name, x, y, z, w)
   1.108 +{
   1.109 +	var loc = gl.getUniformLocation(p, name);
   1.110 +	if(loc != -1) {
   1.111 +		gl.useProgram(p);
   1.112 +		gl.uniform4f(loc, x, y, z, w);
   1.113 +	}
   1.114 +}
   1.115 +
   1.116 +function set_uniform_matrix4fv(p, name, mat)
   1.117 +{
   1.118 +	var loc = gl.getUniformLocation(p, name);
   1.119 +	if(loc != -1) {
   1.120 +		gl.useProgram(p);
   1.121 +		gl.uniformMatrix4fv(loc, false, mat);
   1.122 +	}
   1.123 +}
   1.124 +
   1.125  function logmsg(str)
   1.126  {
   1.127  	if(console) {