WebGL2RenderingContext: bufferData() 方法

Baseline 廣泛可用 *

此功能已成熟,並可在多種裝置和瀏覽器版本上執行。自 2021 年 9 月起,所有瀏覽器均已支援此功能。

* 此特性的某些部分可能存在不同級別的支援。

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

WebGL API 的 WebGL2RenderingContext.bufferData() 方法建立並初始化緩衝區物件的資料儲存。

語法

js
bufferData(target, size, usage)
bufferData(target, srcData, usage)
bufferData(target, srcData, usage, srcOffset)
bufferData(target, srcData, usage, srcOffset, 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

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

size 可選

一個 GLsizeiptr,用於設定緩衝區物件資料儲存的大小(以位元組為單位)。必須提供 sizesrcData 中的一個。

srcData 可選

一個 TypedArray 或一個 DataView,它檢視一個 ArrayBufferSharedArrayBuffer,該緩衝區將被複制到資料儲存中。如果為 null,仍會建立一個數據儲存,但其內容未初始化且未定義。必須提供 sizesrcData 中的一個。

usage

一個 GLenum,指定資料儲存的預期使用模式,以用於最佳化目的。可能的值

gl.STATIC_DRAW

其內容旨在由應用程式指定一次,並多次用作 WebGL 繪圖和影像規範命令的源。

gl.DYNAMIC_DRAW

其內容旨在由應用程式反覆指定,並多次用作 WebGL 繪圖和影像規範命令的源。

gl.STREAM_DRAW

其內容旨在由應用程式指定一次,並最多用作 WebGL 繪圖和影像規範命令的源幾次。

gl.STATIC_READ

其內容旨在透過從 WebGL 讀取資料來指定一次,並由應用程式查詢多次。

gl.DYNAMIC_READ

其內容旨在透過從 WebGL 讀取資料來反覆指定,並由應用程式查詢多次。

gl.STREAM_READ

其內容旨在透過從 WebGL 讀取資料來指定一次,並由應用程式查詢最多幾次。

gl.STATIC_COPY

其內容旨在透過從 WebGL 讀取資料來指定一次,並多次用作 WebGL 繪圖和影像規範命令的源。

gl.DYNAMIC_COPY

其內容旨在透過從 WebGL 讀取資料來反覆指定,並多次用作 WebGL 繪圖和影像規範命令的源。

gl.STREAM_COPY

其內容旨在透過從 WebGL 讀取資料來指定一次,並最多用作 WebGL 繪圖和影像規範命令的源幾次。

srcOffset 可選

一個 GLuint,指定要開始讀取緩衝區的元素索引偏移量。僅當提供了 srcData 時才允許。

length 可選

一個 GLuint,預設為 0。僅當給定了 srcOffset 時才允許。

返回值

無(undefined)。

異常

  • 如果上下文無法使用給定的 size 建立資料儲存,則會丟擲 gl.OUT_OF_MEMORY 錯誤。
  • 如果 size 為負數,則會丟擲 gl.INVALID_VALUE 錯誤。
  • 如果 targetusage 不是允許的列舉值之一,則會丟擲 gl.INVALID_ENUM 錯誤。

規範

規範
WebGL 規範
# 5.14.5

瀏覽器相容性

另見