1.类型化数组

WebGL设计复杂的计算,需要提前知道数值的精度,而标准的javascript数值无法满足需要。WebGL引入了一个概念,叫类型化数组。

ArrayBuffer的类型,表示的只是内存中指定的字节数,但不会指定这些字节用于保存什么类型的数据,其就是为将来使用而分配一定数量的字节。

var buffer=new ArrayBuffer(20);

创建该对象后,能够通过该对象获得的信息只有包含的字节数,方法是访问byteLength属性。

var bytes=buffer.byteLength;

1.1 视图

var view=new DataView(buffer,9,10);

创建一个从字节9开始到字节18的新视图。

读写数组缓冲器的数据,要求我们必须记住要将数据保存到哪里,需要占用多少字节,工作量很多,类型化视图应运而生。

1.2 类型化视图

也称为类型化数组,它们除了元素必须是某种特定的数据类型外,与常规的数组无异。

var unit16s=new Uint16Array(buffer,9,10);

还可以不用创建ArrayBuffer对象

常用方式:把常规数组传入类型化视图的构造函数即可。

var int8s=new Int8Array([10,20,30,40]);

2.WebGL上下文

var gl=drawing.getContext("experimental-webgl");

取得WebGL上下文对象后,就可以开始3D绘图了。

2.1常量

2.2方法命名

2.3准备绘图

操作WebGL上下文之前,首先使用clearColor()方法来指定要使用的颜色。

2.4视口与坐标

2.5缓冲区

2.6错误

手工调用gl.getError()方法,这个方法返回一个表示错误类型的常量。

2.7着色器(使用GLSL语言)

顶点着色器和片段着色器

顶点着色器将3D顶点转换为需要渲染的2D顶点。

片段着色器用于准确计算要绘制的每个像素。

2.8编写着色器

2.9绘图

webgl只能绘制三种形状,点、线、三角。

gl.drawElements()和gl.drawArrays()

【webGL】的更多相关文章

  1. 【webGL】threejs入门 ---创建一个简单立方体

    开发环境 Three.js是一个JavaScript库,所以,你可以使用平时开发JavaScript应用的环境开发Three.js应用.如果你没什么偏好的话,我会推荐Komodo IDE. 调试建议使 ...

  2. 【WebGL】《WebGL编程指南》读书笔记——第6章

    一.前言        最近重感冒发烧,妈蛋好难受,请假了3天,驾校也没去,简直僵硬!今天继续WebGL的学习. 二.正文        A. GLSL支持两种数据值类型: 整数型(int)与浮点型( ...

  3. 【WebGL】《WebGL编程指南》读书笔记——第5章

    一.前言        终于到了第五章了,貌似开始越来越复杂了. 二.正文         Example1:使用一个缓冲区去赋值多个顶点数据(包含坐标及点大小) function initVerte ...

  4. 【WebGL】《WebGL编程指南》读书笔记——第3章

    一.前言 根据前面一章的内容,继续第三章的学习. 二.正文       一起绘制三个点,这里要使用到缓存了 var n = initVertexBuffers(gl); //返回绘制点的个数 n ) ...

  5. 【WebGL】《WebGL编程指南》读书笔记——第2章

    一.前言 最近看了<WebGL编程指南>这本书,发现还是很有意思的,故每章阅读后做个笔记. 二.正文 Example1:在canvas中绘制矩形 <!DOCTYPE html> ...

  6. 【WebGL】3. 相机

    相机的种类:WebGL中的相机有两种:正投影相机和透视相机 1. 正投影相机OrthographicCamera:类似于工程图纸中的视角,忽略远近距离,远近的物体比例不变,多用于科学研究,工程图纸的应 ...

  7. 【WebGL】2.基础概念

    引入Three.js <!DOCTYPE html> <html> <head> <title></title> </head> ...

  8. 【WebGL】1.WebGL简介

    OpenGL和WebGL基本概念 OPEN GL:一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. WebGL:›一个3D ...

  9. 【WebGL】WebGL API 详解

    基于 WebGL Specifications 最全面的API释疑. 类型以及对象定义 这部分内容主要定义一部分类型和数据结构. typedef unsigned long GLenum; typed ...

随机推荐

  1. 【CentOS】设置服务开机自动启动

    CentOS安装好apache.mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了. 例如,要 ...

  2. JAVA动态代理基础

    Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM) 彻底理解JAVA动态代理 class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中. ...

  3. layui table 行号

    {type: 'numbers', title: '序号', width: '80'}

  4. npm、cnpm、bower安装区别

    简单地说,就是帮你下载好你需要的css或者js库,而且三者功能也都是一样的.那为什么要下载这3个不同的呢?据说npm容易被墙……而cnpm是淘宝的镜像,所以通常用cnpm代替npm.至于bower,是 ...

  5. my big day is coming!

    明天博士学位论文答辩,给自己加油! 期望一切顺利!

  6. Oracle 用户、角色管理简介

    Oracle 用户.角色管理简介 by:授客 QQ:1033553122 创建用户 形式1:创建名为testacc2的用户 CREATE USER testacc2 IDENTIFIED BY abc ...

  7. RecyclerView打造通用的万能Adapter

    既然想做到通用那么现在摆在面前的就三个问题:数据怎么办?布局怎么办? 绑定怎么办?.数据决定采用泛型,布局打算直接构造传递,绑定显示效果肯定就只能回传. 1 基本改造 数据决定采用泛型,布局打算直接构 ...

  8. View的layout机制

    View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw). 源代码分析 在View的源代码中, ...

  9. AndroidKiller报.smali文件丢失问题解决(关闭Android Studio的Instant Run)

    第一节编写一个Android程序里我们生成了一个验证激活码的apk,当我们输入的激活码正确时才能注册成功,输入错误时注册失败. 现在我们想输入错误的激活码也能注册.我们用Android反编译工具进行反 ...

  10. Visual Studio 2012 Update 1 离线升级包(相当于VS2012 SP1离线补丁包)

    Visual Studio 2012 Update 1 发布也有一段时间了,吾乐吧尝试了好几次在线升级,但是网络不给力啊,结果都失败了.于是一直都想找到官方提供的VS2012 SP1完整离线升级包,不 ...