为了绘制三维图形, webGL 通常需要同时处理大量相同类型的数据, 为了优化性能, WebGL 为每种基本数据类型引入了一种特殊的数组**(类型化数组)**, 浏览器预先知道数组中的数据类型, 所以处理起来也更加有效率
类型化数组都有哪些:
Int8Array
: 8位有符号整数,长度1个字节。Uint8Array
: 8位无符号整数,长度1个字节。Int16Array
: 16位有符号整数,长度2个字节。Uint16Array
: 16位无符号整数,长度2个字节。Int32Array
: 32位有符号整数,长度4个字节。Uint32Array
: 32位无符号整数,长度4个字节。Float32Array
: 32位浮点数,长度4个字节。Float64Array
: 64位浮点数,长度8个字节。
类型化数组提供的方法:
get(index)
获取第 index 个元素值set(index, value)
设置第 index 个元素的值为 valueset(array, offset)
从第 offset 个元素开始将数组 array 中的值填过去length
长度没什么好说的BYTES_PER_ELEMENT
数组中每个元素所占的字节数
类型化数组与常规数组的区别:
类型化数组实质上是二进制数据,而ArrayBuffer这段区域又是指定长度的,基于这些便可推出其与常规数组的区别:
- 类型化数组元素都是数字,它不像JS常规数组那样可以参杂不同类型
- 类型化数组长度固定
- 所有元素初始化为 0