我正在玩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