複数モデルのレンダリング
vboの変更は行わずに、座標変換行列だけを操作して複数モデルの描画をする
ViewとProjectionを事前に用意してかけておく
モデル行列を複数用意
m1, m2とする
pv * m1の行列をuniformに登録
1つ目のモデルを描画
pv * m2の行列をuniformに登録
2つ目のモデルを描画
code:js
// 各種行列の生成と初期化
var mMatrix = m.identity(m.create());
var vMatrix = m.identity(m.create());
var pMatrix = m.identity(m.create());
var tmpMatrix = m.identity(m.create());
var mvpMatrix = m.identity(m.create());
// ビュー×プロジェクション座標変換行列
m.perspective(90, c.width / c.height, 0.1, 100, pMatrix);
m.multiply(pMatrix, vMatrix, tmpMatrix);
// 1つめ
// 一つ目のモデルを移動するためのモデル座標変換行列
// モデル×ビュー×プロジェクション(一つ目のモデル)
m.multiply(tmpMatrix, mMatrix, mvpMatrix);
// uniformLocationへ座標変換行列を登録し描画する(一つ目のモデル)
gl.uniformMatrix4fv(uniLocation, false, mvpMatrix);
gl.drawArrays(gl.TRIANGLES, 0, 3);
//2つめ
// 二つ目のモデルを移動するためのモデル座標変換行列
m.identity(mMatrix);
// モデル×ビュー×プロジェクション(二つ目のモデル)
m.multiply(tmpMatrix, mMatrix, mvpMatrix);
// uniformLocationへ座標変換行列を登録し描画する(二つ目のモデル)
gl.uniformMatrix4fv(uniLocation, false, mvpMatrix);
gl.drawArrays(gl.TRIANGLES, 0, 3);
// コンテキストの再描画
gl.flush();