当前位置:首页 > 时尚生活

webgl 图解WebGL和Three.js工作原理

首先,我们在谈论什么?

我们谈论两件事:

1.WebGL背后的工作原理是什么?

2.以Three.js为例,框架在背后起什么作用?

二、为什么要理解原理?

我们假设你对WebGL有一定的了解,或者用Three.js做了一些事情,这时你可能会遇到这样一些问题:

1.很多事情还是做不到,甚至没有任何想法;

2.遇到bug,解决不了,甚至没有方向;

3.性能有问题,完全不知道怎么优化。

这个时候,我们需要了解更多。

第三,首先理解一个基本概念

1.什么是矩阵?

简单来说,矩阵用于坐标变换,如下图所示:

它只能知道点、线、三角形?我一定是弄错了。

不,你没看错。

甚至这么复杂的模型都是用三角形画的。

4.2.WebGL绘图过程

简单地说,WebGL绘图过程包括以下三个步骤:

1、获取顶点坐标

2.基本装配(即绘制三角形)

3.光栅化(生成面片,即像素)

接下来,我们将一步一步地解释每个步骤。

4.2.1.获取顶点坐标

顶点坐标从何而来?立方体很好说。如果是机器人呢?

没错,我们就不一一写这些坐标了。

通常来源于3D软件导出或框架生成,如下图所示:

写缓冲区是什么?

是的,为了简化流程,我之前没有介绍。

由于顶点数据有上千个,我们得到顶点坐标后,通常会存储在视频内存中,也就是缓冲区,方便GPU读取更快。

4.2.2、原始装配

我们已经知道,图元装配是从顶点生成图元(三角形)。这个过程是自动完成的吗?答案不完全正确。

为了让我们有更高的可控性,也就是自由控制顶点位置,WebGL给了我们这个权力,就是可编程渲染流水线(不懂)。

WebGL需要我们先处理顶点,那么如何处理呢?我们先来看看下图:

我们引入了一个新的术语叫做顶点着色器,它是由opengl es编写的,由java以字符串的形式定义,并传递给GPU进行生成。

例如,以下是一段顶点着色器代码:

属性vec4位置;void main(){ GL _ Position = Position;}

属性修饰符用于声明浏览器(java)传递给顶点着色器的变量值;

位置是我们定义的顶点坐标;

Gl_Position是一个内置的传出变量。

这段代码不起任何作用。如果是画2d图形,没问题,但是如果是画3d图形,也就是传入的顶点坐标是3D坐标,我们需要转换成屏幕坐标。

比如v(-0.5,0.0,1.0)转换成p(0.2,-0.4),类似于用相机拍照。

4.2.2.1,顶点着色器处理流程

回到刚才的话题,顶点着色器是如何处理顶点坐标的?

如上图,顶点着色器会先转换坐标,然后用GPU组装图元。这个顶点着色器程序运行的次数取决于顶点的数量。

您可能会注意到顶点着色器变成了:

属性vec4位置;一致mat4矩阵;void main(){ GL _ Position = Position * matrix;}

也就是说,应用矩阵矩阵将三维世界坐标转换成屏幕坐标。这个矩阵叫做投影矩阵,是从java中导入的。至于这个矩阵怎么生成,暂时不讨论。

4.2.3.光栅化

像图元装配一样,栅格化是可控的。

图元生成完成后,我们需要对模型进行“着色”,运行在GPU上的“片段着色器”将完成这项工作。

它也是一个opengl es程序,纹理(颜色,漫反射贴图等。)和模型的光照由面片着色器计算。

下面是一个简单的片段着色器代码:

精密中泵浮子;void main(void){ GL _ FragColor = vec 4(1.0,1.0,1.0,1.0);}

Gl_FragColor是输出颜色值。

4.2.3.1和片段着色器的处理流程

着色器如何控制颜色生成?

如上图所示,顶点着色器是它有多少个顶点,运行多少次,而片段着色器是它生成多少个片段(像素),运行多少次。

4.3.WebGL的完整工作流程

此时,WebGL已经经历了以下处理流程:

1.数据准备阶段

在这个阶段,我们需要提供顶点坐标、索引(三角形绘制顺序)、uv(确定贴图坐标)、法线(确定光照效果)和各种矩阵(如投影矩阵)。

顶点数据存储在缓冲区中(因为数量巨大),并传递给具有修改器属性的顶点着色器;

矩阵规则

1.《webgl 图解WebGL和Three.js工作原理》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《webgl 图解WebGL和Three.js工作原理》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/777630.html

上一篇

苏炳添6秒47夺冠 苏炳添6秒47夺冠具体哪场比赛?苏炳添6秒47夺取得伯明翰赛60米冠军

下一篇

汉堡阁 进口地暖品牌大全介绍

莞式服务卡片内容 微信小程序藏招嫖信息提供“莞式服务” 发个坐标就可安排最近的公司

莞式服务卡片内容 微信小程序藏招嫖信息提供“莞式服务” 发个坐标就可安排最近的公司

酒店在门下放小卡片,用qq群发特服信息,似乎并不少见。近日,大众爆料,有人利用微信“小程序就近”公开招妓,只要“发个坐标,就能安排最近的公司”。通过小程序提供的联系方式,记者被引导到长沙多家酒店的休闲会所,有一份明码标价的“草案”...”“推荐阅读:突发!江西省萍乡...

groupm 实习专场 | 全球最大传播集团WPP旗下Groupm来了!有转正机会!坐标北上广!

groupm 实习专场 | 全球最大传播集团WPP旗下Groupm来了!有转正机会!坐标北上广!

▼ 今天,边肖向所有人推荐 世界最大的通讯集团WPP群邑 国际顶级4A广告公司实习岗位 有很多机会变得积极 -Groupm集团实习套餐来了- 请检查一下!  土元官 关于群益  土元官 群益是WPP集团的成员之一,是由麦视、商鞅、李静、李川和易五家媒体公司整合而成的...

上海哪个学校的mba好 坐标上海,已经工作,想问下考哪个学校的在职MBA比较好?MBA择校维度大揭秘

上海哪个学校的mba好 坐标上海,已经工作,想问下考哪个学校的在职MBA比较好?MBA择校维度大揭秘

“坐标上海,我已经工作了。考虑到我不想马上辞职去读MBA,找工作不容易。主要是不想失业。我想问一下哪个学校的在职MBA比较好?” 今天想和大家分享一下我准备MBA的经验,这和择校有关。相信每...

黄河楼 兰州标志性建筑“黄河楼”点亮仪式盛大举行,开启魅力兰州“新坐标”

黄河楼 兰州标志性建筑“黄河楼”点亮仪式盛大举行,开启魅力兰州“新坐标”

9月29日,夜幕降临之际,以“点亮黄河大厦,魅力兰州之夜”为主题的兰州黄河大厦亮灯仪式在兰州市七里河区黄河大厦景区隆重举行。兰州黄河大厦作为黄河附近的标志性建筑,其建设和开放一直受到...

四川地震时间 3天内5次地震,震中坐标近乎重叠!四川地震局这样回应

四川地震时间 3天内5次地震,震中坐标近乎重叠!四川地震局这样回应

从10月21日至今, 四川北川县,三天, 连续发生了五次地震 北川县是“5·12”四川 汶川地震重灾区之一   “5·12”地震中的北川农村信用社废墟 北川连续地震吸引了所有人的...

韩旭 韩旭的三个坐标,从WNBA到国内赛场,她成长了多少?

  • 韩旭 韩旭的三个坐标,从WNBA到国内赛场,她成长了多少?
  • 韩旭 韩旭的三个坐标,从WNBA到国内赛场,她成长了多少?
  • 韩旭 韩旭的三个坐标,从WNBA到国内赛场,她成长了多少?

gg地图 谷歌地图中有意思的地理坐标

题目:谷歌地图中有意思的地理坐标分享一下独特的新奇的坐标解答:29 58"29.93"n,31 07"47.05"e 金字他 34 21"39.52"n,108 38"22.04"e 金字他 中国...

谷歌地图 谷歌地图中有意思的地理坐标

题目:谷歌地图中有意思的地理坐标分享一下独特的新奇的坐标解答:29 58"29.93"n,31 07"47.05"e 金字他 34 21"39.52"n,108 38"22.04"e 金字他 中国...