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 ...
随机推荐
- js算法初窥02(排序算法02-归并、快速以及堆排序)
上一篇,我们讲述了一些简单的排序算法,其实说到底,在前端的职业生涯中,不涉及node.不涉及后台的情况下,我目前还真的没想到有哪些地方可以用到这些数据结构和算法,但是我在前面的文章也说过了.或许你用不 ...
- HttpMessageConverter 专题
配置HttpMessageConverterHttpMessageConverter是对http的request和response进行自动转换配置HttpMessageConverter可重载下面两个 ...
- js术语扫盲贴:XHR、RegExp、call-apply、prototype
(1) XHR:xml httprequestXHR注入:XHR 注入技术是通过XMLHttpRest来获取javascript的.但与eval不同的是,该机制是通过创建一个script的DOM元素, ...
- 关于table相关的属性,CSS样式
table属性: 1:border没有设置的话表格没有边框 2:cellpadding单元格和内容的空白 3:cellspacing单元格和单元格之间的空白 4:frame规定外边框可见性 5:rul ...
- Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)
Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...
- python的加、减、乘、除、取整、取余计算
加法: 输入以下代码: >>>1+1 >>>1.0+1 减法: 输入以下代码: >>>1-2 >>>1.0-2 乘法: 输入以下 ...
- CyclicBarrier简介
CyclicBarrier简介 CyclicBarrier和CountDownLatch不同,是当await的数量达到了设定的数量之后,才继续往下执行 CyclicBarrier数的是调用了Cycli ...
- resteasy简单实例
1.建一个maven web项目 新建一个maven项目,next,第一个框不要勾选 选择maven-archetype-webapp,建一个web项目 键入项目组织id与项目id 一般此时搭建的只是 ...
- Ceph万兆内网与系统万兆迁移
本文将总结一次为Ceph集群加装万兆内网(cluster network),后因需要对比实验来研究分布式存储集群在计算,网络,存储过程中各部分耗时比例,而将Ceph整体系统又整体搬移至万兆网的过程.但 ...
- netty源码学习
概述 Netty is an asynchronous event-driven network application framework for rapid development of main ...