投稿者 tel | 2013年8月29日

WebGLでVertexArrayObjectを使う

WebGLの拡張機能でVertexArrayObject(VAO)が使えるので試してみる。

VAOはVertexBufferObject(VBO)とかの設定をまとめて覚えておいて、楽に切り替えられるようにする機能。

http://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/

使い方

拡張機能のOES_vertex_array_objectを有効にする。拡張機能がサポートされていないとnullが返ってくる。

ext = gl.getExtension('OES_vertex_array_object');

createVertexArrayOESメソッドでVAOを作成する。

var vao = ext.createVertexArrayOES();

バインドしてVBOの設定をする。デフォルトに戻すときはglBindVertexArrayだと0だが、WebGLの場合にはnullをバインドする。
VBOの設定では必要なbindBuffer、enableVertexAttribArray、vertexAttribPointerを呼ぶ。

ext.bindVertexArrayOES(vao);
// VBOの設定...
ext.bindVertexArrayOES(null);

レンダリングの前にバインドする。

ext.bindVertexArrayOES(vao);
gl.drawElements(gl.TRIANGLES, length, gl.UNSIGNED_SHORT, 0);

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。