【webGL】
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】的更多相关文章
- 【webGL】threejs入门 ---创建一个简单立方体
开发环境 Three.js是一个JavaScript库,所以,你可以使用平时开发JavaScript应用的环境开发Three.js应用.如果你没什么偏好的话,我会推荐Komodo IDE. 调试建议使 ...
- 【WebGL】《WebGL编程指南》读书笔记——第6章
一.前言 最近重感冒发烧,妈蛋好难受,请假了3天,驾校也没去,简直僵硬!今天继续WebGL的学习. 二.正文 A. GLSL支持两种数据值类型: 整数型(int)与浮点型( ...
- 【WebGL】《WebGL编程指南》读书笔记——第5章
一.前言 终于到了第五章了,貌似开始越来越复杂了. 二.正文 Example1:使用一个缓冲区去赋值多个顶点数据(包含坐标及点大小) function initVerte ...
- 【WebGL】《WebGL编程指南》读书笔记——第3章
一.前言 根据前面一章的内容,继续第三章的学习. 二.正文 一起绘制三个点,这里要使用到缓存了 var n = initVertexBuffers(gl); //返回绘制点的个数 n ) ...
- 【WebGL】《WebGL编程指南》读书笔记——第2章
一.前言 最近看了<WebGL编程指南>这本书,发现还是很有意思的,故每章阅读后做个笔记. 二.正文 Example1:在canvas中绘制矩形 <!DOCTYPE html> ...
- 【WebGL】3. 相机
相机的种类:WebGL中的相机有两种:正投影相机和透视相机 1. 正投影相机OrthographicCamera:类似于工程图纸中的视角,忽略远近距离,远近的物体比例不变,多用于科学研究,工程图纸的应 ...
- 【WebGL】2.基础概念
引入Three.js <!DOCTYPE html> <html> <head> <title></title> </head> ...
- 【WebGL】1.WebGL简介
OpenGL和WebGL基本概念 OPEN GL:一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. WebGL:一个3D ...
- 【WebGL】WebGL API 详解
基于 WebGL Specifications 最全面的API释疑. 类型以及对象定义 这部分内容主要定义一部分类型和数据结构. typedef unsigned long GLenum; typed ...
随机推荐
- JS生成指定范围内的随机数(支持随机小数)
直接需要函数的话,直接到文章的最后面找. ============================================================= 转载:https://www.cn ...
- MySQL数据库的配置
一.配置MySQL数据库 MySQL的官网www.mysql.com 1.解压绿色版mysql,并改名为mysql5.7,如下图 对比一下下图5.6以前的版本,少data目录(存放数据)和my-def ...
- XJad反编译工具
XJad反编译工具 我们写的java文件,编译后就会生成相应的字节码文件,也就是.java文件经过编译以后生成.class文件 现在,假设我们现在存在这样一个问题:就是我们想自己动手验证注释会不会被编 ...
- POJ2398(KB13-B 计算几何)
Toy Storage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5968 Accepted: 3573 Descr ...
- [js常用]页面滚动的顶部,指定位置或底部,平滑滚动
js平滑滚动到顶部.底部.指定地方 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- iframe 页面刷新
1.点击刷新 [1].html页面代码 <a href="javascript:;" title="刷新当前页" id="Refresh&quo ...
- 使用Apache php 的一些基本操作(一)
切换目录命令:(就可以在www文件夹里面操作了) cd /var/www/html 新建一个文件: sudo vim info.php (这里出现了一个问题,sudo: vim: command no ...
- drupal7 覆写node-type.tpl.php获取字段值的两种方式
字段的机读名称为:field_publication_date <!-- 下面两种方式都可以获取node字段的值--> 出版时间: <?php print date('Y-m-d', ...
- Flask结合Redis消息队列实现电影弹幕
用到的弹幕播放器插件:dplayer.js(开源) 1.安装Redis 2.安装flask-redis包 pip install flask-redis3.下载dplayer 页面搭建 1.引入资源 ...
- Emmagee app性能测试工具使用教程
Emmagee app性能测试工具使用教程 by:授客 QQ:1033553122 简介 Emmagee是网易杭州研究院QA团队开发的一个简单易上手的Android性能监测小工具,主要用于监控单个Ap ...