this page에서 복사 한 webgl
으로 놀고 있습니다. 마우스를 사용하여 조명 위치를 제어하고 싶습니다. 난 그냥 fragment shader
에 js
에서 정적 값을 보내는 경우Webgl - 동적 마우스 위치
가 작동합니다
function updateMousePosition(e){
console.log(e.pageX);
mousex = e.pageX;
mousey = e.pageY;
}
때 마우스 이동 호출됩니다
mouseLocation = gl.getUniformLocation(program, "mouse");
gl.uniform2f(mouseLocation, 0,0);
을 나는 마우스 위치를 업데이트 할 수있는 기능을 가지고 :
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 ...
}
그것은 작동하지 않았다. 하지만 updateMousePosition(e)
에 console.log
에서 정적 값을 보낼 때 :
gl.uniform2f(mouseLocation, 679, 590);//number taken from console.log
그 일을.
작동하지 않는 것이 확실하지만 숫자 형식 또는 유형이 의심됩니다. js
은 정확히 입력하지 않고 glsl
입니다.
어떻게 해결할 수 있습니까?
더 많은 코드를 표시해야합니다. 당신이 보여준 것에는 아무런 문제가 없습니다. – gman