WebGLRenderingContext: bufferSubData() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

注意:此功能在 Web Workers 中可用。

WebGLRenderingContext.bufferSubData() 方法是 WebGL API 的一部分,用於更新緩衝區物件資料儲存的子集。

語法

js
bufferSubData(target, offset)
bufferSubData(target, offset, srcData)

引數

目標

一個 GLenum,指定繫結點(目標)。可能的值

gl.ARRAY_BUFFER

包含頂點屬性的緩衝區,例如頂點座標、紋理座標資料或頂點顏色資料。

gl.ELEMENT_ARRAY_BUFFER

用於元素索引的緩衝區。

使用 WebGL 2 上下文時,還可以使用以下值:

gl.COPY_READ_BUFFER

用於將一個緩衝區物件複製到另一個緩衝區的緩衝區。

gl.COPY_WRITE_BUFFER

用於將一個緩衝區物件複製到另一個緩衝區的緩衝區。

gl.TRANSFORM_FEEDBACK_BUFFER

用於變換反饋操作的緩衝區。

gl.UNIFORM_BUFFER

用於儲存 uniform 塊的緩衝區。

gl.PIXEL_PACK_BUFFER

用於畫素傳輸操作的緩衝區。

gl.PIXEL_UNPACK_BUFFER

用於畫素傳輸操作的緩衝區。

dstByteOffset

一個 GLintptr,指定資料替換將開始的位元組偏移量。

srcData 可選

一個 TypedArrayDataView,它檢視一個 ArrayBufferSharedArrayBuffer,並將這些資料複製到資料儲存中。

srcOffset

一個 GLuint,指定開始讀取緩衝區的元素索引偏移量。

length 可選

一個 GLuint,預設為 0。

返回值

無(undefined)。

異常

  • 如果資料將寫入超出緩衝區末尾,或者 datanull,則會丟擲 gl.INVALID_VALUE 錯誤。
  • 如果 target 不是允許的列舉之一,則會丟擲 gl.INVALID_ENUM 錯誤。

示例

使用 bufferSubData

js
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const buffer = gl.createBuffer();
const data = new Float32Array([1, 2, 3, 4]);
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
gl.bufferSubData(gl.ARRAY_BUFFER, 512, data);

規範

規範
WebGL 規範
# 5.14.5

瀏覽器相容性

另見