我正在玩webgl
复制从this page。我想用鼠标来控制灯的位置。Webgl - 动态鼠标位置
如果我只是给从js
静态值fragment shader
它会工作:
mouseLocation = gl.getUniformLocation(program, "mouse");
gl.uniform2f(mouseLocation, 0,0);
我有一个函数来更新鼠标的位置:
function updateMousePosition(e){
console.log(e.pageX);
mousex = e.pageX;
mousey = e.pageY;
}
被称为当鼠标移动:
canvas.addEventListener('mousemove', updateMousePosition, false);
然后将鼠标位置发送到fragment shader
每一帧:
gl.uniform2f(mouseLocation, mousex,mousey);
之后,我会得到鼠标的位置从fragment shader
:
uniform vec2 mouse;
void main(void) {
//mp - mouse position
vec2 mp = vec2(mouse.x/resolution.x, 1.0 - mouse.y/resolution.y);
//lp depend on mp
vec3 lp = vec3(mp.x, mp.y, -1.0);
//other calculation ...
}
没有奏效。 但是,当我从console.log
在updateMousePosition(e)
发下来的静态值:
gl.uniform2f(mouseLocation, 679, 590);//number taken from console.log
它的工作。
我不确定什么是不工作,但我怀疑是数字的格式或类型,js
是不是严格类型,但glsl
是。
我该如何解决这个问题?
您需要展示更多代码。您所展示的内容没有任何问题。 – gman