Javascript高级编程学习笔记(96)—— WebGL(2) 类型化视图

类型化视图

类型化视图一般也被认为是一种类型化数组.

因为其元素必须是某种特定的数据类型,类型化视图都继承自 Dataview

  • Int8Array: 表示8位二补整数(即二进制补数)
  • Uint8Array: 8位无符号整数
  • Int16Array: 16位二补数
  • Uint16Array: 16位无符号整数
  • Float32Array: 32位IEEE浮点值
  • Float64Array: 64位IEEE浮点值

与上面同名的构造函数都支持三个参数:

  1. ArrayBuffer
  2. 字节偏移量
  3. 字节长度

返回一个类型化视图实例

此外上面的每个构造函数都有一个 BYTES_PER_ELEMENT属性,用于表示类型化数组的每一个元素需要多少字节.

如 Int8Array 的 BYTES_PER_ELEMENT 则为1

而且如果传入的第一个参数的为一个数值 那么构造函数会返回一个能够保存该数值个数元素的类型化数组

传入的如果是一个普通的数组,那么构造函数则会将该普通数组转为一个类型化视图

PS:如果传入的值大于对应的字节数,那么保存的值将是该值与当前大小最大值的模

例如想在16位无符号整数中保存 65537(最大能保存65535),那么实际保存的值将是1

使用类型化数组时可以通过和普通数组类似的中括号的方式来迭代数组;

类型化数组还拥有一个方法 subarray()

该方法接收两个参数

  1. 开始元素的索引
  2. 结束元素的索引

会返回一个基于当前类型视图的子视图

为什么这一篇文章和上一篇文章看起来和WebGl没有什么关系但是却要仔细介绍呢?

因为WebGL中的着色器编写语言是 GLSL

这种语言是一种类C语言,所以当我们使用WebGL时需要将JavaScript中的"万物皆可放"的数组转为某种单纯的数组格式才能传入着色器进行相应操作

所以类型化数组视图是WebGL中的基础操作

原文地址:https://www.cnblogs.com/lhyxq/p/10754490.html