2 ithanmang

尚未进行身份认证

我要认证

骐骥一跃,不能十步;驽马十驾,功在不舍

等级
TA的排名 1w+

搞懂JavaScript类型化数组

文章目录简介缓冲何为缓冲缓冲的作用ArrayBuffer接口定义静态方法DataView接口定义实例属性实例方法代码示例TypedArray取值范围接口定义创建方式实例特性静态属性实例方法实际案例总结简介所谓类型化数组就是一种类似数组的对象,它提供了一种用于访问原始二进制数据的机制,WebGL中经常会用到,并且必须用到,但这并不是说它的出现只是因为WebGL,随着Web程序的越来强大,类型化数...

2020-03-28 20:31:55

OpenGL -纹理的使用

文章目录1.1 纹理的概念1.2 凹凸纹理1. 基本思想2. 三种记录方法1. Offset map2. Hieght-field map3. Normal map1.3 位移纹理1. 概念1.4 映射关系1. 投影式纹理映射2. 两步法纹理映射3. 展UV方法1.5 OpenGL中的使用1. 创建纹理对象2. 应用纹理到像素3. 启用纹理贴图4. 绘制场景5. 纹理坐标变换1.6 纹理过滤1....

2019-12-11 18:16:18

OpenGL - 片元测试和混合

文章目录1.1 片元测试1. 片元与像素的区别2. 裁剪测试3. Alpha 测试1.2 混合运算1. 相关函数1.3 多边形偏移1.4 雾效的使用1.1 片元测试1. 片元与像素的区别例如上面的小方格,被光栅化后经过一系列的测试和原酸,在画到颜色缓冲区中,然后对应到屏幕上的像素值,光栅化后的是片元,在颜色缓冲区中的称之为像素片元在写入帧缓存之前要按顺序经历一系列的测试,在写入帧缓冲时也...

2019-11-26 17:22:34

OpenGL - 帧缓冲区了解

文章目录1.1 何为帧缓冲区1. 显示器分类1. 随机扫描显示器2. 光栅扫描显示器2. 帧缓冲区1.2 颜色缓冲区1. 清除缓冲区2. 单缓冲与双缓冲1.3 深度缓冲区与 z-buffer1.视域 深度范围2. 消隐3. Z-buffer消隐4. 深度缓冲的函数1.4 模板缓冲1.1 何为帧缓冲区(Frame buffer)帧缓冲区的每个单元对应的就是屏幕上的一个个像素对片元的...

2019-11-22 15:53:24

OpenGL - 光照模型以及OpenGL中的设置

景物表面任一点被光照射后投向观察者眼中的光亮度的大小,实际上计算光照就是计算投向观察者眼中的光亮度以及颜色,将计算过程表达成一个数学公式就是所谓的光照明模型,这种模型不容易直接构建,因此把光分钟三种成分再去分别计算每种成分所独有的特性

2019-11-22 10:41:06

OpenGL - OpenGL 中的矩阵变换

1.1 变换的四个步骤变换就是 Transformation 在流水线中会依次进行四个变换分别如下几何变换 > 投影变换 > 裁剪 > 视口变换首先把三维模型通过几何变换调整好位置,然后开始投影,把在视锥体以外的东西给裁减掉,最后再经过视口变换投射到屏幕上成为二维图像三维模型 > 二维图形1.2 三种几何变换平移(Translation) – glT...

2019-11-12 15:21:35

OpenGL - OpenGL 编程简介

OpenGL 是开发的图形编程库,是调用图形硬件程序的接口,由大约150个函数组成,用户可以来完成各种绘图任务1.1 OpenGL可以做什么变换,几何编程,投影变换,视口变换光照与材质纹理映射图像功能,anti-aliasing(反混淆),for,blending(混合)…特效,深度检测,运动模糊…建模…注意:OpenGL 不是用来建模的,是用来渲染的,它的大部分函数是用来设...

2019-11-12 15:03:10

OpenGL - 图形流水线简介

1.1 计算机图形学的概念计算机图形学(Computer Graphics )简称CG,是一门研究如何利用计算机进行图形计算、处理和显示的学科,简单的说图形学是一种使用数学算法将二维或者三维图形转化为计算机显示器所能显示的二维栅格形式的科学,就是从3D到2D的转换。Modeling:构造场景的三维模型 – 建模Rendering:将三维模型画在屏幕上–渲染Animation:让图像动...

2019-11-12 14:54:47

OpenGL - glutTImerFunc 定时器使用

定时器可以按照固定的时间间隔去执行某些特定的操作,glut提供了一个定时器方法glutTimerFunc用于设置定时器的回调函数1. glutTimerFunc函数定义如下FGAPI void FGAPIENTRY glutTimerFunc( unsigned int time, void (* callback)( int ), int value );参数描述un...

2019-10-27 21:16:44

OpenGL - visual studio 2015 配置 freeglut 开发环境

freeglut是辅助OpenGL开发的工具库,使用它可以更便捷进行开发,主要功能如下提供了管理窗口的功能提供了键盘、鼠标等右键菜单交互接口提供了一些 “高级” 建模函数等等…环境配置步骤1、下载glut和cmake首先,需要下载freeglut和cmake工具freeglut:https://sourceforge.net/projects/freeglut/ 下载最新版本即...

2019-10-02 15:48:12

ES6 语法 - 模块化

模块是自动运行在严格模式下并且没有办法退出运行的javascript代码,在模块顶部创建的变量不会自动被添加到全局共享作用域,这个变量仅在模块的顶级中存在,而且模块必须导出一些外部代码可以访问的元素,在模块的顶部,this的值是undefined,其次,模块不支持html风格的代码注释,模块最重要的部分就是导出和导入,只有很好的理解了导入和导出才能理解模块与脚本的区别1.1、导出模块使用exp...

2019-09-26 15:24:14

ES6 语法 - Class 类使用

1、Class类大多数面向对象的编程语言都支持类和类继承的特性,而javascript却不支持这些特性,只能通过其他方法定义并联系多个相似的对象,这种状态一直延续到了ES5,由于类似的库层出不穷,最终ES6决定引入类的特性1.1、近似类结构ES5中没有类的概念,最相近的思路是创建一个自定义类型,首先创建一个构造函数,然后定义另一个方法并赋值给构造函数的原型function Person(n...

2019-09-19 11:14:04

ES6 语法 - Set 和 Map 集合

1、Set和Map集合Set集合是一种无重复元素的列表,Map集合被含多组键值对,集合中每个元素分别存放着可访问的键名和它对应的值,Map集合经常被用于缓存频繁取用的数据1.1、Set集合ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值,通过Set集合可以快速访问其中的数据,更有效的追踪各种离散值Set结构的实例有以下属性Set.prototype.co...

2019-09-19 11:12:24

ES6 语法 - 数组扩展

1、数组扩展1.1、静态方法1. Array.of()Array.of()方法创建一个具有可变数量参数的新数组示例,而不考虑参数的数量或类型Array.of()和Array构造函数之间的区别在于处理整数参数,例如Array.of(7)创建一个具有单个元素的7数组,而Array(7)创建一个长度为7的空数组是指一个有7个空位的empty的数组,而不是有7个undefined组成的数组let...

2019-09-19 11:11:23

ES6 语法 - Symbol 类型

1、Symbol类型ES5包含五种原始数据类型:字符串、数字、布尔值、null和undefined,ES6引入了第6中原始类型Symbol在之前的对象属性名都是字符串,很容易造成属性名冲突,比如使用他人提供的对象,想为这个对象添加新的方法,新方法的名字很有可能与现有的方法产生冲突,Symbol就可以保证每个属性的名字都是独一无二的,这样就从根本上防止了属性冲突1.1、基本使用Symbol通...

2019-09-19 11:09:41

ES6 语法 - 对象新增

1、对象新增1.1、对象简写1. 属性值简写例如初始化一个对象,有键值对的组合,在ES5中是如下这样写的var name = 'foo';var job = 'coder';var obj = { name:name, job:job}console.log(obj);//{name: "foo", job: "coder"}ES6简化了这种写法,可以像下面这样...

2019-09-19 11:08:19

ES6 语法 - 字符串新增方法

1、字符串新增方法1.1、includes检测字符包含用来检测字符串是否包含某个字符,如果包含返回true不包含返回falselet str = 'http://www.baidu.com';console.log(str.includes('http'));// true1.2、startsWith和endsWith检测字符串已什么开头和结尾let str = 'http://w...

2019-09-19 11:05:52

ES6 语法 - 模板字面量

1、模板字面量1.1、基本用法模板字面量是增强版的字符串,使用反引号(`)标识let str = `hello world`;console.log(str);// "hellow world"console.log(typeof str);// "string"console.log(str.length);// 11上面的代码中,使用模板字面量语法创建一个字符串,并赋值给str...

2019-09-19 11:02:53

ES6 语法 - 解构赋值

1、解构赋值所谓解构就是javaScript允许按照一定的模式从数组和对象中提取值,将其拆分为更小部分的过程1.1、对象解构1.1、解构对象字面量的语法形式是在一个赋值操作符左边放一个对象字面量let obj = { name:'foo', job:'coder'};let {name,job} = obj;// 将 对象 obj的属性给解构出来console.l...

2019-09-19 11:01:23

ES6 语法 - 函数形参默认值

1、函数形参默认值有时候给函数传递参数的时候需要给一个默认的参数,一般是这样做的function fn(a, b) { a = a == undefined ? 10 : a; b = b == undefined ? 10 : b; return a + b;}console.log(fn());// 201.1、设置默认值新规范,可以直接给形参进行赋...

2019-09-19 10:58:25

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。