Three.js对于不同的网格物体没有使用不同的着色器程序,为什么?

用户名

我试图弄清楚three.js的工作方式,并尝试了一些着色器调试器。

我添加了两个具有基本材质的简单平面(没有任何阴影模型的单一颜色),它们在渲染过程中旋转。

在此处输入图片说明

首先,我的问题是...为什么three.js使用单个着色器程序(请参阅WebGL上下文函数.useProgram())来同时处理两个网格。我想对象是相同的,这就是为什么出于性能原因,单个着色器程序将类似对象用于该对象的原因。

但是...我更改了three.js应用程序源代码,现在场景中有一个平面和一个立方体正在旋转。

让我们再次看一下着色器调试器:

在此处输入图片说明

在这里,您可以看到three.js再次使用了一个着色器程序,但是对象现在不同。而这一刻对我来说还不清楚。

如果看那个着色器,它似乎是非常通用且庞大的着色器程序,并且还有两个不同的着色器程序,它们已编译但未使用。

那么,为什么three.js使用单个着色器程序?那些正确的(或可能不是)原因是什么?

错误的

着色器中完成的大多数工作都与网格的材质部分有关,而不是几何形状。

在webgl(或opengl)中,您所了解的几何形状(如果是立方体,球体或其他任何东西)是无关紧要的。

如果您谈论几何的构造方式,那将更有意义。但是,在这些日子里,超过3个顶点的面消失了,很少使用三角带,这是几种不同的几何形状... face3几何形状,线几何形状,粒子几何形状和缓冲区几何形状。

大多数情况下,使用不同材质球的关键区别在于材质。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Three.JS-不同对象的不同着色器

来自分类Dev

Three.JS-不同对象的不同着色器

来自分类Dev

限制网格物体THREE.js的旋转

来自分类Dev

three.js clone()属性更改了我所有的网格物体

来自分类Dev

three.js如何运行着色器程序

来自分类Dev

Three.js:Three.Geometry + LambertMaterial网格物体上的光照不正确

来自分类Dev

在Three.js着色器中使用灯光

来自分类Dev

Three.js-皮肤骨架网格物体实例,动画和混合

来自分类Dev

Three.js-网格物体接收的光不超过3个

来自分类Dev

有没有可能消除three.js着色器中引号和逗号的麻烦?

来自分类Dev

在THREE.JS中组合着色器

来自分类Dev

Three.js的累积着色器

来自分类Dev

three.js淡入/淡出后期处理着色器

来自分类Dev

着色器中的Three.js纹理

来自分类Dev

Three.js片段着色器颜色过渡

来自分类Dev

着色器中的Three.js纹理

来自分类Dev

THREE.js着色器的颜色纹理

来自分类Dev

Web着色器-three.js,需要修复吗?

来自分类Dev

Three.js着色器pointLight位置

来自分类Dev

WebGL / Three.js着色器.r和.g是什么意思?

来自分类Dev

使用three.js在片段着色器中手动选择多图谱

来自分类Dev

使用three.js将PointLight信息传递到自定义着色器

来自分类Dev

Three.js如何使用着色器高度图检查碰撞

来自分类Dev

使用Three.js在Angular应用中加载着色器时出错

来自分类Dev

如何使用着色器在Three.js中进行平滑过渡?

来自分类Dev

使用jQuery访问Three.js的着色器文件内容

来自分类Dev

使用three.js将PointLight Info传递到自定义着色器

来自分类Dev

使用three.js在片段着色器中手动选择多图谱

来自分类Dev

Three.js 如何在着色器中使用你的结构?

Related 相关文章

热门标签

归档