まったり開発もどき

本書の内容に関する問い合わせは、メールもしくはTwitterで受け付けています。
本書で紹介したコードはこちらからダウンロードできます
pTex, vTex, aTex, mTex のテクスチャの大きさは、(N, 1) となるという説明が抜けていました。
1次元配列 P, V, A, M を横方向に細長い2次元配列に変換するというイメージです。
実際に横方向に細長いテクスチャを作成している箇所は、 createTexture() 関数の51-52行目の gl.texImage2D() メソッドです。
このメソッドは、テクスチャ領域の確保とVRAMへのデータの転送を行うために必要です。以下に gl.texImage2D() メソッドの引数の説明をします。
gl.TEXTURE_2D を指定しています。これは2次元テクスチャであることを意味します。0を指定しています。iformat を指定しています。list, dimension を使って横幅を計算します。1 で固定します。0 を指定する必要があります。format を指定しています。type を指定しています。list を指定しています。iformat によって、 format, type は決まります。
このことはWebGL 2.0 APIクイックリファレンスガイドの5ページに書かれています。
例えば、iformatにgl.RGBA32Fを指定すると、formatはgl.RGBA, typeはgl.FLOATにしなければなりません。
// float 値を 1 つだけ指定
mat2 d = mat2(1.0); // = mat2(1.0 * 2.0 + 3.0 * 3.0, 2.0 * 2.0 + 4.0 * 3.0,
// 1.0 * 4.0 + 3.0 * 5.0, 2.0 * 4.0 + 4.0 * 5.0)
となっていますが、正しくは
// float 値を 1 つだけ指定
mat2 d = mat2(1.0); // = mat2(1.0, 0.0,
// 0.0, 1.0)
でした。