ANGLE_instanced_arrays

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

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

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

常量

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

ext.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE

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

方法

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

ext.drawArraysInstancedANGLE() (en-US)

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

ext.drawElementsInstancedANGLE() (en-US)

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

ext.vertexAttribDivisorANGLE() (en-US)

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

示例

启用扩展:

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

规范

Specification
WebGL ANGLE_instanced_arrays Khronos Ratified Extension Specification

浏览器兼容性

BCD tables only load in the browser

参见