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, SharedArrayBufferArrayBufferView (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 エラーをスローします。
  • targetusage が許可された列挙のものでない場合、gl.INVALID_ENUM エラーをスローします。

bufferData の使用

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) メソッドを使用します。

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

関連項目