WEBGL_multi_draw: multiDrawArraysInstancedWEBGL() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

WEBGL_multi_draw.multiDrawArraysInstancedWEBGL()WebGL API 的一個方法,用於從陣列資料渲染多個圖元。它等同於多次呼叫 gl.drawArraysInstanced() 方法。

語法

js
multiDrawArraysInstancedWEBGL(mode,
    firstsList, firstsOffset,
    countsList, countsOffset,
    instanceCountsList, instanceCountsOffset,
    drawCount)

引數

模式

一個 GLenum,指定要渲染的圖元的型別。可能的值有:

  • gl.POINTS:繪製一個點。
  • gl.LINE_STRIP:繪製一條連線到下一個頂點的直線。
  • gl.LINE_LOOP:繪製一條連線到下一個頂點的直線,並將最後一個頂點連接回第一個頂點。
  • gl.LINES:在兩個頂點之間繪製一條線。
  • gl.TRIANGLE_STRIP
  • gl.TRIANGLE_FAN
  • gl.TRIANGLES:為一組三個頂點繪製一個三角形。
firstsList

一個 Int32ArrayArray(包含 GLint 型別的值),指定了向量點陣列的起始索引列表。

firstsOffset

一個 GLuint 型別的值,定義了 `firstsLists` 陣列的起始點。

countsList

一個 Int32ArrayArray(包含 GLsizei 型別的值),指定了要渲染的索引數量列表。

countsOffset

一個 GLuint 型別的值,定義了 `countsList` 陣列的起始點。

instanceCountsList

一個 Int32ArrayArray(包含 GLsizei 型別的值),指定了要執行的元素範圍的例項數量列表。

instanceCountsOffset

一個 GLuint 型別的值,定義了 `instanceCountsList` 陣列的起始點。

drawCount

一個 GLsizei,指定要執行的元素範圍的例項數量。

返回值

無。

異常

  • 如果 mode 不是接受的值之一,則會丟擲 gl.INVALID_ENUM 錯誤。
  • 如果 `drawCount` 或 `firstsList`、`countsList` 或 `instanceCountsList` 中的項為負數,則會丟擲 `gl.INVALID_VALUE` 錯誤。
  • 如果 gl.CURRENT_PROGRAMnull,則會丟擲 gl.INVALID_OPERATION 錯誤。

示例

js
const firsts = new Int32Array(/* … */);
const counts = new Int32Array(/* … */);
const instanceCounts = new Int32Array(/* … */);
ext.multiDrawArraysInstancedWEBGL(
  gl.TRIANGLES,
  firsts,
  0,
  counts,
  0,
  instanceCounts,
  0,
  firsts.length,
);

規範

規範
WebGL WEBGL_multi_draw 擴充套件規範

瀏覽器相容性

另見