Javascript高级编程学习笔记(96)—— WebGL(2) 类型化视图
类型化视图
类型化视图一般也被认为是一种类型化数组.
因为其元素必须是某种特定的数据类型,类型化视图都继承自 Dataview
- Int8Array: 表示8位二补整数(即二进制补数)
- Uint8Array: 8位无符号整数
- Int16Array: 16位二补数
- Uint16Array: 16位无符号整数
- Float32Array: 32位IEEE浮点值
- Float64Array: 64位IEEE浮点值
与上面同名的构造函数都支持三个参数:
- ArrayBuffer
- 字节偏移量
- 字节长度
返回一个类型化视图实例
此外上面的每个构造函数都有一个 BYTES_PER_ELEMENT属性,用于表示类型化数组的每一个元素需要多少字节.
如 Int8Array 的 BYTES_PER_ELEMENT 则为1
而且如果传入的第一个参数的为一个数值 那么构造函数会返回一个能够保存该数值个数元素的类型化数组
传入的如果是一个普通的数组,那么构造函数则会将该普通数组转为一个类型化视图
PS:如果传入的值大于对应的字节数,那么保存的值将是该值与当前大小最大值的模
例如想在16位无符号整数中保存 65537(最大能保存65535),那么实际保存的值将是1
使用类型化数组时可以通过和普通数组类似的中括号的方式来迭代数组;
类型化数组还拥有一个方法 subarray()
该方法接收两个参数
- 开始元素的索引
- 结束元素的索引
会返回一个基于当前类型视图的子视图
为什么这一篇文章和上一篇文章看起来和WebGl没有什么关系但是却要仔细介绍呢?
因为WebGL中的着色器编写语言是 GLSL
这种语言是一种类C语言,所以当我们使用WebGL时需要将JavaScript中的"万物皆可放"的数组转为某种单纯的数组格式才能传入着色器进行相应操作
所以类型化数组\视图是WebGL中的基础操作
Javascript高级编程学习笔记(96)—— WebGL(2) 类型化视图的更多相关文章
- Javascript高级编程学习笔记(98)—— WebGL(4) WebGL上下文(2)
错误 Javascript与WebGL之间的一个最大区别在于,WebGL的操作一般不会抛出错误 如果希望获取WebGL的错误信息,那么就需要手动调用 gl.getError() 方法 该方法会返回以 ...
- Javascript高级编程学习笔记(97)—— WebGL(3) WebGL上下文(1)
WebGL上下文 在支持WebGL的浏览器中,WebGL的名字为 "experimental-webgl",这是由于 webgl 的规范仍未制定完成 制定完成后名字就会改为简单的 ...
- Javascript高级编程学习笔记(99)—— WebGL(5) 绘图
绘图 WebGL只能绘制三种形状: 点 线 三角 其它的形状都是由上面的三种形状合成之后绘制到三维空间中的 执行绘图操作 WebGL 提供了两种方法: gl.drawElements() gl.dra ...
- Javascript高级编程学习笔记(95)—— WebGL(1) 类型化数组
WebGL webgl 是针对 canvas 的 3D上下文,与其它Web技术不同,WebGL并非是W3C制定的标准,而是由 Khronos Group 制定的. 类型化数组 WebGL所涉及的复杂运 ...
- Javascript高级编程学习笔记(3)—— JS中的数据类型(1)
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...
- JavaScript高级编程学习笔记(第三章之一)
继续记笔记,JavaScript越来越有意思了. 继续... 第三章:JavaScript基础 ECMAScript语法在很大程度上借鉴了C和其它类似于C的语言,比如Java和Perl. 大小写敏感: ...
- Javascript高级编程学习笔记(1)—— JS简介
此系列文章,用于记录所学,如有错误欢迎指出. Javascript组成 1.核心(ECMAScript) 2.文档对象模型(DOM) 3.浏览器对象模型(BOM) 1.核心(ECMAScript) E ...
- Javascript高级编程学习笔记(57)—— 事件(1)事件流
事件 JS与HTML的交互是通过事件实现的 而事件指的就是:文档或浏览器窗口特定的交互瞬间 可以通过侦听器来预定事件,以便在事件发生时执行相应的代码 这种模式也是设计模式中的观察者模式 事件流 有了事 ...
- Javascript高级编程学习笔记(84)—— Canvas(1)基本用法
Canvas绘图 Canvas自HTML5引入后,由于其炫酷的效果成为HTML5新增功能中最受欢迎的部分 Canvas元素通过在页面中设定一个区域,然后就可以使用JS在其中绘制图形 <canva ...
随机推荐
- 从JVM内存管理的角度谈谈JAVA类的静态方法和静态属性
在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的 ...
- 实际项目开发需要注意的tips
1.尽量少用== 或者 != ,除非能够保证这里不会出现强制类型转换,严格起见,最好用 === 与 !==
- 解决mongodb的安装mongod命令不是内部或外部命令
1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现以下文件 在安装的盘C:下建立mongodb文件夹,拷贝bin文件夹到该 ...
- Firefox driver 那些事~
1. selenium 3.x开始,webdriver/firefox/webdriver.py的init中,executable_path="geckodriver":而2.x是 ...
- Java 读书笔记 (十五) Java 异常处理
捕获异常 使用try 和catch关键字可以捕获异常.try/catch 代码块放在异常可能发生的地方. try/catch 代码块中的代码称为保护代码 ,使用try/catch的语法如下: try ...
- 利用异或求(整数数组中,有2K+1个数,其中有2k个相同,找出不相同的那个数)
转自https://blog.csdn.net/renjie_998003/article/details/50738025 java的位运算符中有一个叫异或的运算符,用符号(^)表示,其运算规则是: ...
- api_response.go
, "METHOD_NOT_ALLOWED"} }, Log(l), V1)(w, req, nil) }) }
- Linux服务器安装Oracle服务端总结
摘要: 通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端.本例中linux服务器系统为CentOS6.5. #环境设置 1.检查服务器 ...
- mutex.go
package} } ) ].GetResponseRange().Kvs[].CreateRevision ) return nil } func (m *Mutex) IsOwner() ...
- ||与&&的返回值
当你准备携带你的配剑杀向江湖的时候,当你准备进入js这门语言的时候,你会遇到很多||与&&的问题.那么对于他们的返回值你知道多少呢? 在此之前我们来聊一个大家都知道的知识:js中值转换 ...