まったり開発もどき
本書の内容に関する問い合わせは、メールもしくは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)
でした。