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 ...
随机推荐
- 领域驱动设计和Spring
原文 http://static.olivergierke.de/lectures/ddd-and-spring/ 1.介绍这篇文章是的介绍一下领域驱动设计的基础构件.概念和Java的web应用(主要 ...
- 32.APP后端处理表情的一些技巧
app应用中文字夹带表情是个很常见的现象.甚至一些40多岁的大叔级用户,也喜欢在自己的昵称中夹带表情,在产品运营后发现这个现象,彻底颠覆了我的世界观. 在后台处理表情的时间,我遇到过下面3个问题: 1 ...
- 再谈.net的堆和栈---.NET Memory Management Basics
.NET Memory Management Basics .NET memory management is designed so that the programmer is freed fro ...
- 让Tomcat告别频繁重启
在网站开发过程中,有一个很烦的问题就是每次我们在项目里增加几行代码,然后我们企图在浏览器中查看修改后的变化时,却发现浏览器的内容并不变化,于是我们只能通过频繁的重启tomcat来获得最新的效果,其实这 ...
- System.out.println()
System是java.lang中的类,out为System中的一个静态数据成员,out是java.io.PrintStream类的对象,而println()是java.io.PrintStream类 ...
- 如何使用Docker部署一个Go Web应用程序
熟悉Docker如何提升你在构建.测试并部署Go Web应用程序的方式,并且理解如何使用Semaphore来持续部署. 简介 大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版 ...
- 【codeforces 718E】E. Matvey's Birthday
题目大意&链接: http://codeforces.com/problemset/problem/718/E 给一个长为n(n<=100 000)的只包含‘a’~‘h’8个字符的字符串 ...
- 拿Proxy可以做哪些有意思的事儿
Proxy是什么 首先,我们要清楚,Proxy是什么意思,这个单词翻译过来,就是 代理.可以理解为,有一个很火的明星,开通了一个微博账号,这个账号非常活跃,回复粉丝.到处点赞之类的,但可能并不是真的由 ...
- Sublime Text3插件安装(经典)
今天我去听数学建模的培训,感觉很有意思,可是我没有报名(QAQ),没有参加培训的报名,不过幸好没有开始选拔比赛 所以我决定学习数学建模方面的知识,要好好学习了! 希望我未来的学弟学妹们!(不要像我这样 ...
- 基于Token认证的多点登录和WebApi保护
在文章中有错误的地方,或是有建议或意见的地方,请大家多多指正,邮箱: linjie.rd@gmail.com 一天张三,李四,王五,赵六去动物园,张三没买票,李四制作了个假票,王五买了票,赵六要直接F ...