js-JavaScript高级程序设计学习笔记13
第十五章 canvas绘图
1、WebGL是针对Canvas的3D上下文。
2、类型化数组
WebGL涉及的复杂计算需要提前知道数值的精度,而标准的JS数值无法满足需求。因此WebGL引入了一个概念,叫类型化数组。它的核心是一个名为ArrayBuffer(数组缓冲器)的类型,每个ArrayBuffer对象表示的只是内存中指定的字节数。能够通过该对象得到的信息只有它包含的字节数。
var buffer=new ArrayBuffer(20);
var bytes=buffer.byteLength;1、视图。
2、类型化视图。一般也称为类型化数组。
3、WebGL上下文。
创建webgl上下文时,先进行能力检测,有的浏览器无法创建时会报错,所以最好把调用封装在一个try-catch块中。
1、常量。OpenGL中常量以GL_开头,webgl中没有GL_前缀。
2、方法命名。很多方法通过名字传达有关数据类型的信息。
3、准备绘图。在实际操作前,一般要用某种实色清除canvas,为绘图做好准备。
gl.clearColor(0,0,0,1);//black
gl.clear(gl.COLOR_BUFFER_BIT);//clear方法使用上步定义的颜色来填充相应区域。4、视口与坐标。viewport方法改变视口大小。视口坐标原点位于左下角。视口内部的坐标系与定义视口的坐标系不一样,原点位于中心点。
5、缓冲区。顶点信息保存在JS的类型化数组中,使用之前必须转换到WebGL的缓冲区。调用gl.createBuffer()创建缓冲区,然后使用gl.bindBuffer()绑定到WebGL上下文,之后就可以用数据填充缓冲区了。
6、错误。手动调用gl.getError()方法获得错误类型的常量。
7、着色器。顶点着色器和片段(像素)着色器。它们是用GLSL语言写的。
12、绘图。WebGL只能绘制三种形状:点/线/三角。其他形状都是这三种基本形状合成而来。
js-JavaScript高级程序设计学习笔记13的更多相关文章
- JavaScript高级程序设计---学习笔记(一)
今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- javascript 高级程序设计 学习笔记
<!--<script> // 异步请求封装 IE6即以上浏览器 // ajax(url,fnSucc,selectID,fnFaild) //url 请求地址 //fnSucc 异 ...
- JavaScript高级程序设计---学习笔记(二)
面向对象程序设计1.属性类型.定义多属性.读取属性特性对象的属性在创建时都带有一些特征值,JavaScript通过这些特征值来定义它们的行为.这些特性是为了实现JavaScript引擎用的,因此不能直 ...
- JavaScript高级程序设计学习笔记第十章--DOM
1.DOM:文档对象模型,是针对 HTML 和 XML 文档的一个 API(应用程序编程接口). 2.DOM 可以将任何 HTML 或 XML 文档描绘成一个由多层节点构成的结构. 3.文档节点是每个 ...
- JavaScript高级程序设计学习笔记--DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Ele ...
- Javascript高级程序设计学习笔记一
看完w3school的javascript的概念,有点基础,开始红皮书的路程,今晚总结前二章的心得. 第一章:javascript简介 重点是javascript的实现是由 ECMAScript(核心 ...
- JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承
相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...
- JavaScript高级程序设计学习笔记第六章--面向对象程序设计
1.ECMAScript没有类的概念,ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”,有点类似于散列表 2.ECMAScript 中有两种属性:数据属性和访问 ...
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
随机推荐
- centos安装docker
一.升级内核 [root@iZ2893wjzgyZ ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org [root@iZ289 ...
- js物理弹性窗口
js物理弹性窗口 点击下载代码
- 恢复Reflector反编译后资源文件的办法
反编译问题: 1.路径问题:如果遇到了Path.Combine,有错误改下即可 2.资源文件问题: 在Reflector下,对左边的资源管理窗口的Resources文件夹下的资源文件,进行右键点击,选 ...
- data:image/png;base64
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJ ...
- 【转】如何利用logrotate工具自动切分滚动中的日志文件
FROM : http://www.2cto.com/os/201503/381812.html 在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或da ...
- JUnit4测试简介
相比于自己写一个测试类,在里面调用调试方法,使用JUnit4进行测试有很多的优点,极大的提高了测试的速度.本文简单介绍如何使用myEclipse10使用JUnit4,方便日后回顾总结. myEclip ...
- 使用Aspose.Cells生成Excel的方法详解(转)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System ...
- 【JavaScript】 knockout.js 日期格式化借助【momentjs】
源:Knockout.js 日期格式化 源:momentjs
- android SwipeRefreshLayout google官方下拉刷新控件
下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...
- python基础--基本数据类型考试_day3
1.执行 Python 脚本的两种方式 终端和交互模式 法1:python helloword.py 法2:ps: 执行前需给预chmod 755 helloword.py (linux系统中)./h ...