ANGLE_instanced_arrays

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since June 2016.

ANGLE_instanced_arrays是属于 WebGL API 的一个扩展 API,它允许多次绘制相同的对象或相似对象组,前提是它们共享相同的顶点数据、基本图形的个数和类型。WebGL 的扩展都能使用WebGLRenderingContext.getExtension() 这个方法。更多详细信息,请参考 WebGL tutorial(WebGL 使用教程)里的Using Extensions (使用扩展)

备注: 这个扩展仅仅能使用在 WebGL1 上下文中。在 WebGL2,默认情况下这个扩展的在 WebGL2 的上下文中起作用,它的常量以及方法使用过程中没有“ANGEL”后缀。

尽管名字叫“ANGLE”,只要硬件支持,它可以运行在任意设备上,而不仅是在 Windows 上起作用。 "ANGLE"只是表明了这个扩展是被 ANGLE 这个库的作者书写的,并没有更多的含义。

常量

这个扩展提供了一个新常量,它能被 gl.getVertexAttrib() 这个方法所使用:

ext.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE

当这个常量在gl.getVertexAttrib()中作为 pname 参数使用时,将返回一个用于实例渲染的频率因子GLint

方法

这个扩展提供了三个新的方法。

ext.drawArraysInstancedANGLE()

作用与gl.drawArrays() 相同,除了元素范围的多实例的执行以及每次迭代时的实例扩展。

ext.drawElementsInstancedANGLE()

作用与gl.drawElements()相同,除了元素集中的多实例的计算以及每个集之间的实例扩展。

ext.vertexAttribDivisorANGLE()

当用ext.drawArraysInstancedANGLE()ext.drawElementsInstancedANGLE()渲染基本图元的多实例时,会提升通用的顶点属性的速度。

示例

启用扩展:

js
var ext = gl.getExtension("ANGLE_instanced_arrays");

规范

Specification
WebGL ANGLE_instanced_arrays Khronos Ratified Extension Specification

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
ANGLE_instanced_arrays
drawArraysInstancedANGLE
drawElementsInstancedANGLE
vertexAttribDivisorANGLE

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
Has more compatibility info.

参见