JavaScript 自体あまり慣れてはいないんですが、モダンスタイルはじわじわ勉強していくことにして。とりあえず手頃なベクトルライブラリが必要なので glMatrix と Sylvester を試してみました。どっちも割といい感じです。
webGL に渡す行列設定程度なら、glMatrix が手軽でいいかな。
var proj = mat4.create();
mat4.identity(proj);
mat4.ortho(-1, 1, 1, -1, -1, 1, proj);
var mv = mat4.create();
mat4.identity(mv);
var mvp = mat4.create();
mat4.multiply(mv, proj, mvp);
gl.uniformMatrix4fv(program.mvMatrix, false, mv);
gl.uniformMatrix4fv(program.projMatrix, false, proj);
gl.uniformMatrix4fv(program.mvpMatrix, false, mvp);
こんな感じ?ユニフォーム変数の方は事前にシェーダから拾っておきます。
program.mvpMatrix = gl.getUniformLocation(program, "mvpMatrix");
program.mvMatrix = gl.getUniformLocation(program, "mvMatrix");
program.projMatrix = gl.getUniformLocation(program, "projMatrix");
glMatrix を自分で拡張してもいいんですが、ツールっぽいものを作って gl呼び出しと別に演算するなら Sylvester 使った方が早そうです。ま、これくらいは自分で作ってもいいですね。
コメント