WebGL2を使うようになり、なるべく「使うべき」と呼ばれる機能を使うようにしているが、時々期待通りに動かないことがある。頂点配列オブジェクトを使おうとしてコマンドの実行順を間違えていたがために問題発生、手順を残しておくことにする。
//頂点データのlocation取得やデータの転送(バッファの作成)は事前に実行しても良い
//VAOを作ってバインドする
const vao = gl.createVertexArray();
gl.bindVertexArray( vao );
//頂点属性の有効化(実はあまり意味がわからない)
gl.enableVertexAttribArray( location ); // <<< 要注意
//先に転送しておいた頂点データをバインド
gl.bindBuffer( gl.ARRAY_BUFFER, buffer );
//頂点データの仕様を通知
gl.vertexAttribPointer( location, size, type, normalize, stride, offset );
要注意行(gl.enableVertexAttribArray)を頂点配列オブジェクトをバインドする前に実行していると期待通りに動作しなかった。あとこのコマンドはシェーダ初期化時(?)に一回だけコールすれば良い、とのこと。まだ、イマイチ理解できていないので、奥深いところにはたどり着けない。