WebGL2RenderingContext: getBufferSubData() 方法
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用。
WebGL2RenderingContext.getBufferSubData() 方法是 WebGL 2 API 的一部分,用於從緩衝區繫結點讀取資料,並將其寫入 ArrayBuffer 或 SharedArrayBuffer。
語法
js
getBufferSubData(target, srcByteOffset, dstData)
getBufferSubData(target, srcByteOffset, dstData, dstOffset)
getBufferSubData(target, srcByteOffset, dstData, dstOffset, length)
引數
目標-
一個
GLenum,指定繫結點(目標)。可能的值gl.ARRAY_BUFFER-
包含頂點屬性的緩衝區,例如頂點座標、紋理座標資料或頂點顏色資料。
gl.ELEMENT_ARRAY_BUFFER-
用於元素索引的緩衝區。
gl.COPY_READ_BUFFER-
用於將一個緩衝區物件複製到另一個緩衝區的緩衝區。
gl.COPY_WRITE_BUFFER-
用於將一個緩衝區物件複製到另一個緩衝區的緩衝區。
gl.TRANSFORM_FEEDBACK_BUFFER-
用於變換反饋操作的緩衝區。
gl.UNIFORM_BUFFER-
用於儲存 uniform 塊的緩衝區。
gl.PIXEL_PACK_BUFFER-
用於畫素傳輸操作的緩衝區。
gl.PIXEL_UNPACK_BUFFER-
用於畫素傳輸操作的緩衝區。
srcByteOffset-
一個
GLintptr,指定從緩衝區開始讀取的位元組偏移量。 dstData-
一個
TypedArray或DataView物件,用於複製資料。如果dstData是DataView,則dstOffset和length以位元組為單位解釋,否則將使用dstData的元素型別。 dstOffset可選-
一個
GLuint,指定在dstData中開始寫入的元素索引偏移量。 length可選-
一個
GLuint,指定要複製的元素數量。如果此值為 0 或未指定,getBufferSubData將一直複製到dstData的末尾。
返回值
無(undefined)。
異常
如果滿足以下條件,則會生成 INVALID_VALUE 錯誤:
offset+returnedData.byteLength超出了緩衝區的末尾returnedData為nulloffset小於零。
如果滿足以下條件,則會生成 INVALID_OPERATION 錯誤:
target繫結到零target是TRANSFORM_FEEDBACK_BUFFER,並且當前有任何變換反饋物件處於活動狀態。
示例
js
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
const arrBuffer = new ArrayBuffer(
vertices.length * Float32Array.BYTES_PER_ELEMENT,
);
gl.getBufferSubData(gl.ARRAY_BUFFER, 0, new Float32Array(arrBuffer));
規範
| 規範 |
|---|
| WebGL 2.0 規範 # 3.7.3 |
瀏覽器相容性
載入中…