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. 自己写一个java的mvc框架吧(四)

    自己写一个mvc框架吧(四) 写一个请求的入口,以及初始化框架 上一章写了获取方法的入参,并根据入参的参数类型进行数据转换.这时候,我们已经具备了通过反射调用方法的一切必要条件.现在我们缺少一个htt ...

  2. Dijkstra和Prim算法的区别

    Dijkstra和Prim算法的区别 1.先说说prim算法的思想: 众所周知,prim算法是一个最小生成树算法,它运用的是贪心原理(在这里不再证明),设置两个点集合,一个集合为要求的生成树的点集合A ...

  3. Listary Pro- 文件浏览与搜索增强的超级神器

    Listary 是一款 Windows 文件浏览增强工具,为 Windows 资源管理器增加智能命令.最近文档以及收藏功能.文件小,功能强大.秒杀系统自带搜索功能!! 它是一款非常优秀的 Window ...

  4. 一个很好用的SqlHelper类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. JS 词法作用域 p2

    关于js 还是写的简短些,利于个人理解: 先看一个例子: var a = 2; function fn(){ var a = 3; console.log(a); } fn(a); 说明:作用域查找会 ...

  6. python 数据结构中的链表操作

    链表的定义: 链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址.由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就 ...

  7. 从零开始学习html(十三) CSS代码缩写,占用更少的带宽

    一.盒模型代码简写 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&quo ...

  8. Adobe Flash Builder 4.6 打开时提示Failed to create the Java Virtual Machine

    最近使用actionscript来编程,用到Adobe Flash Builder 工具,之前一直用着都没事的,今天打开突然就报了这个错误,然后就打不开了 好了,不多说,直接来吧. 首先在你的Adob ...

  9. TI(德州仪器) TMS320C674x逆向分析之二

    TI官网文档: http://www.ti.com/product/tms320c6745/technicaldocuments 里面资料非常详细,可以对着里面一个个看,用的比较多的两个文档: TMS ...

  10. LeetCode题解之Find All Duplicates in an Array

    1.题目描述 2.问题分析 将数组中的元素 A[i] 放到 A[ A[i] - 1] 的位置.然后遍历一边数组,如果不满足 A[i] == i+1,则将A[i]添加到 结果中. 3.代码 vector ...