WebGLRenderingContext: bufferSubData() 方法
注意:此功能在 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可選-
一個
TypedArray或DataView,它檢視一個ArrayBuffer或SharedArrayBuffer,並將這些資料複製到資料儲存中。 srcOffset-
一個
GLuint,指定開始讀取緩衝區的元素索引偏移量。 length可選-
一個
GLuint,預設為 0。
返回值
無(undefined)。
異常
- 如果資料將寫入超出緩衝區末尾,或者
data為null,則會丟擲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 |
瀏覽器相容性
載入中…