からコピーされたwebgl
で遊んでいます。私はライトの位置を制御するためにマウスを使用したい。Webgl - 動的なマウスの位置
私はちょうどそれが動作しますjs
からfragment shader
に静的な値を送信する場合:
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