WebGLRenderingContext.bufferData()
WebGL API WebGLRenderingContext.bufferData()
メソッドは、バッファーオブジェクトのデータストアを初期化、作成します。
構文
// WebGL1: void gl.bufferData(target, size, usage); void gl.bufferData(target, ArrayBuffer? srcData, usage); void gl.bufferData(target, ArrayBufferView srcData, usage); // WebGL2: void gl.bufferData(target, ArrayBufferView srcData, usage, srcOffset, length);
引数
- target
-
結合する場所 (ターゲット) を指定する
GLenum
(en-US)。以下の値を取ることができます。gl.ARRAY_BUFFER
: 頂点の属性を含むバッファーで、頂点座標、テクスチャ座標データや、頂点色データのようなものです。gl.ELEMENT_ARRAY_BUFFER
: 要素の位置指定に使用されるバッファーです。- WebGL 2 context (en-US) を使用している場合は、更に以下の値を利用できます。
gl.COPY_READ_BUFFER
: バッファーオブジェクトを他へコピーするためのバッファーです。gl.COPY_WRITE_BUFFER
: バッファーオブジェクトを他へコピーするためのバッファーです。gl.TRANSFORM_FEEDBACK_BUFFER
: 書き戻し操作を変換するバッファーです。gl.UNIFORM_BUFFER
: ユニフォームブロックの格納に使われるバッファーです。gl.PIXEL_PACK_BUFFER
: ピクセル移動操作に使われるバッファーです。gl.PIXEL_UNPACK_BUFFER
: ピクセル移動操作に使われるバッファーです。
- size
-
GLsizeiptr
(en-US) のバッファーオブジェクトのデータストアのサイズ。 - srcData 省略可
-
ArrayBuffer
,SharedArrayBuffer
かArrayBufferView
(en-US) の型付き配列型の一つで、データストアへ格納されます。null
の場合、データストアは作成されますが、内容は初期化されず未定義です。 - usage
-
データストアの用途を指定する
GLenum
(en-US)。以下の値を取ることができます。gl.STATIC_DRAW
: バッファーの内容は、何度か使用されてあまり変更されません。バッファーへ書き込まれますが、読み出せません。gl.DYNAMIC_DRAW
: バッファーの内容は、よく使用されて何度か変更されます。バッファーへ書き込まれますが、読み出せません。gl.STREAM_DRAW
: バッファーの内容は、よく使用され変更されます。バッファーへ書き込まれますが、読み出せません。- WebGL 2 context (en-US) を使用している場合、さらに以下の値を取ることができます。
gl.STATIC_READ
: バッファーの内容は、何度か使用されてあまり変更されません。バッファーから読み出されますが、書き込めません。gl.DYNAMIC_READ
: バッファーの内容は、よく使用されて何度か変更されます。バッファーから読み出されますが、書き込めません。gl.STREAM_READ
: バッファーの内容は、よく使用され変更されます。バッファーから読み出されますが、書き込めません。gl.STATIC_COPY
: バッファーの内容は、何度か使用されてあまり変更されません。ユーザーによる書き込みや読み出しはできません。gl.DYNAMIC_COPY
: バッファーの内容は、よく使用されて何度か変更されます。ユーザーによる書き込みや読み出しはできません。gl.STREAM_COPY
: バッファーの内容は、よく使用され変更されます。ユーザーによる書き込みや読み出しはできません。
- srcOffset
-
バッファー読み出しを開始する要素の位置のオフセットを指定する
GLuint
(en-US)。 length
省略可-
GLuint
(en-US)。既定値は 0 です。
返り値
ありません。
例外
- 与えられた
size
でデータストアを作成できない場合、gl.OUT_OF_MEMORY
エラーをスローします。 size
が負数の場合、gl.INVALID_VALUE
エラーをスローします。target
やusage
が許可された列挙のものでない場合、gl.INVALID_ENUM
エラーをスローします。
例
bufferData
の使用
js
var canvas = document.getElementById("canvas");
var gl = canvas.getContext("webgl");
var buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
バッファー情報の取得
現在のバッファーの用途やサイズを確認するには、WebGLRenderingContext.getBufferParameter()
(en-US) メソッドを使用します。
js
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE);
仕様策定状況
Specification |
---|
WebGL Specification # 5.14.5 |
ブラウザーの対応
BCD tables only load in the browser