--- title: WebGLRenderingContext.bufferData() slug: Web/API/WebGLRenderingContext/bufferData translation_of: Web/API/WebGLRenderingContext/bufferData --- <div>{{APIRef("WebGL")}}</div> <p><a href="/ja/docs/Web/API/WebGL_API">WebGL API</a> <strong><code>WebGLRenderingContext.bufferData()</code></strong> メソッドは、バッファーオブジェクトのデータストアを初期化、作成します。</p> <h2 id="構文">構文</h2> <pre class="syntaxbox">// 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); </pre> <h3 id="引数">引数</h3> <dl> <dt>target</dt> <dd>結合する場所 (ターゲット) を指定する {{domxref("GLenum")}}。以下の値を取ることができます。 <ul> <li><code>gl.ARRAY_BUFFER</code>: 頂点の属性を含むバッファーで、頂点座標、テクスチャ座標データや、頂点色データのようなものです。</li> <li><code>gl.ELEMENT_ARRAY_BUFFER</code>: 要素の位置指定に使用されるバッファーです。</li> <li>{{domxref("WebGL2RenderingContext", "WebGL 2 context", "", 1)}} を使用している場合は、更にに以下の値を利用できます。 <ul> <li><code>gl.COPY_READ_BUFFER</code>: バッファーオブジェクトを他へコピーするためのバッファーです。</li> <li><code>gl.COPY_WRITE_BUFFER</code>: バッファーオブジェクトを他へコピーするためのバッファーです。</li> <li><code>gl.TRANSFORM_FEEDBACK_BUFFER</code>: 書き戻し操作を変換するバッファーです。</li> <li><code>gl.UNIFORM_BUFFER</code>: ユニフォームブロックの格納に使われるバッファーです。</li> <li><code>gl.PIXEL_PACK_BUFFER</code>: ピクセル移動操作に使われるバッファーです。</li> <li><code>gl.PIXEL_UNPACK_BUFFER</code>: ピクセル移動操作に使われるバッファーです。</li> </ul> </li> </ul> </dd> <dt>size</dt> <dd>{{domxref("GLsizeiptr")}} のバッファーオブジェクトのデータストアのサイズ。</dd> <dt>srcData {{optional_inline}}</dt> <dd>{{jsxref("ArrayBuffer")}}, {{jsxref("SharedArrayBuffer")}} か {{domxref("ArrayBufferView")}} の型付き配列型の一つで、データストアへ格納されます。<code>null</code> の場合、データストアは作成されますが、内容は初期化されず未定義です。</dd> <dt>usage</dt> <dd>データストアの用途を指定する {{domxref("GLenum")}}。以下の値を取ることができます。 <ul> <li><code>gl.STATIC_DRAW</code>: バッファーの内容は、何度か使用されてあまり変更されません。バッファーへ書き込まれますが、読み出せません。</li> <li><code>gl.DYNAMIC_DRAW</code>: バッファーの内容は、よく使用されて何度か変更されます。バッファーへ書き込まれますが、読み出せません。</li> <li><code>gl.STREAM_DRAW</code>: バッファーの内容は、よく使用され変更されます。バッファーへ書き込まれますが、読み出せません。</li> <li>{{domxref("WebGL2RenderingContext", "WebGL 2 context", "", 1)}} を使用している場合、さらに以下の値を取ることができます。 <ul> <li><code>gl.STATIC_READ</code>: バッファーの内容は、何度か使用されてあまり変更されません。バッファーから読み出されますが、書き込めません。</li> <li><code>gl.DYNAMIC_READ</code>: バッファーの内容は、よく使用されて何度か変更されます。バッファーから読み出されますが、書き込めません。</li> <li><code>gl.STREAM_READ</code>: バッファーの内容は、よく使用され変更されます。バッファーから読み出されますが、書き込めません。</li> <li><code>gl.STATIC_COPY</code>: バッファーの内容は、何度か使用されてあまり変更されません。ユーザーによる書き込みや読み出しはできません。</li> <li><code>gl.DYNAMIC_COPY</code>: バッファーの内容は、よく使用されて何度か変更されます。ユーザーによる書き込みや読み出しはできません。</li> <li><code>gl.STREAM_COPY</code>: バッファーの内容は、よく使用され変更されます。ユーザーによる書き込みや読み出しはできません。</li> </ul> </li> </ul> </dd> <dt>srcOffset</dt> <dd>バッファー読み出しを開始する要素の位置のオフセットを指定する {{domxref("GLuint")}}。</dd> <dt><code>length</code> {{optional_inline}}</dt> <dd>{{domxref("GLuint")}}。既定値は 0 です。</dd> </dl> <h3 id="返り値">返り値</h3> <p>ありません。</p> <h3 id="例外">例外</h3> <ul> <li>与えられた <code>size</code> でデータストアを作成できない場合、<code>gl.OUT_OF_MEMORY</code> エラーをスローします。</li> <li><code>size</code> が負数の場合、<code>gl.INVALID_VALUE</code> エラーをスローします。</li> <li><code>target</code> や <code>usage</code> が許可された列挙のものでない場合、<code>gl.INVALID_ENUM</code> エラーをスローします。</li> </ul> <h2 id="例">例</h2> <h3 id="bufferData_の使用"><code>bufferData</code> の使用</h3> <pre class="brush: 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); </pre> <h3 id="バッファー情報の取得">バッファー情報の取得</h3> <p>現在のバッファーの用途やサイズを確認するには、{{domxref("WebGLRenderingContext.getBufferParameter()")}} メソッドを使用します。</p> <pre class="brush: js">gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE); gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE); </pre> <h2 id="仕様策定状況">仕様策定状況</h2> <table class="standard-table"> <tbody> <tr> <th scope="col">仕様</th> <th scope="col">策定状況</th> <th scope="col">コメント</th> </tr> <tr> <td>{{SpecName('WebGL', "#5.14.5", "bufferData")}}</td> <td>{{Spec2('WebGL')}}</td> <td>初回定義。</td> </tr> <tr> <td>{{SpecName('OpenGL ES 2.0', "glBufferData.xml", "glBufferData")}}</td> <td>{{Spec2('OpenGL ES 2.0')}}</td> <td>OpenGL API のマニュアルページ。</td> </tr> <tr> <td>{{SpecName('OpenGL ES 3.0', "glBufferData.xhtml", "glBufferData")}}</td> <td>{{Spec2('OpenGL ES 3.0')}}</td> <td>OpenGL ES 3 API (と同様の) マニュアルページ。<br> <br> 以下の新しい <code>target</code> バッファーを追加。<br> <code>gl.COPY_READ_BUFFER</code>,<br> <code>gl.COPY_WRITE_BUFFER</code>,<br> <code>gl.TRANSFORM_FEEDBACK_BUFFER</code>,<br> <code>gl.UNIFORM_BUFFER</code>,<br> <code>gl.PIXEL_PACK_BUFFER</code>,<br> <code>gl.PIXEL_UNPACK_BUFFER</code><br> <br> 以下の新しい <code>usage</code> ヒントを追加。<br> <code>gl.STATIC_READ</code>,<br> <code>gl.DYNAMIC_READ</code>,<br> <code>gl.STREAM_READ</code>,<br> <code>gl.STATIC_COPY</code>,<br> <code>gl.DYNAMIC_COPY</code>,<br> <code>gl.STREAM_COPY</code>.</td> </tr> </tbody> </table> <h2 id="ブラウザーの対応">ブラウザーの対応</h2> <p>{{Compat("api.WebGLRenderingContext.bufferData")}}</p> <h2 id="関連項目">関連項目</h2> <ul> <li>{{domxref("WebGLRenderingContext.createBuffer()")}}</li> <li>{{domxref("WebGLRenderingContext.bufferSubData()")}}</li> <li>他のバッファー : {{domxref("WebGLFramebuffer")}}, {{domxref("WebGLRenderbuffer")}}</li> </ul>