WebGL;缓冲区还是uniform4fv?

斯凯恩

我目前正在学习WebGL,并且正在使用很多相同的多维数据集但使用不同的转换渲染场景。

我相信我有2种选择可以选择这些选项;

  • 缓冲单个多维数据集,使用uniform4fv进行转换,然后为每个多维数据集将其重新发送(到顶点着色器)。

  • 缓冲所有我的多维数据集(使用translate硬编码的顶点)。

我的问题是在哪种情况下哪种选择更可取?-我认为第一种选择更可取,但这取决于开销或更新统一变量。

man

正如WaclawJasper所说,有很多折衷方案。

在WebGL中执行操作的一般方法是每个对象一个绘画调用(您的第一个方法)。

另一种是使用实例化绘图使用ANGLE_instanced_arrays在这种方法中,您的翻译将存储在缓冲区中。您只需为每个实例更新一次缓冲区翻译(与第二种方法中的每个顶点更新)。该方法假定所有实例都是相同的。

如果您的几何体恰好是混合在一起的(立方体+球体+金字塔),那么另一种方法是将方向数据放入纹理中。通过为每个顶点指定一个instanceId,您可以使用它来计算该实例的数据在纹理中的位置。在这种情况下,您将像以前的方法一样,为每个实例更新一个方向。只是您要更新纹理而不是缓冲区。如果硬件支持从浮点纹理(OES_texture_float读取AFAICT目前大多数硬件所做的操作,则此方法非常简单。

作为在纹理中存储方向的示例,Three.js可选地在纹理中存储骨骼矩阵以进行蒙皮网格渲染,以避开有限数量的制服。

请注意,使用纹理还可以将顶点数据放入纹理中。然后,缓冲区将仅包含顶点索引。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

webgl中绑定缓冲区的逻辑是什么?

来自分类Dev

WebGL-从内存渲染缓冲区

来自分类Dev

kmalloc中的缓冲区还是DMA安全缓冲区吗?

来自分类Dev

WebGL将纹理帧缓冲区复制到纹理帧缓冲区?

来自分类Dev

使用单个顶点缓冲区还是多个顶点缓冲区?

来自分类Dev

nodejs缓冲区是异步还是同步?

来自分类Dev

解除绑定WebGL缓冲区,值得吗?

来自分类Dev

如何在Webgl的缓冲区中仅使用4个顶点绘制2个嵌套矩形?

来自分类Dev

C ++类应包含协议缓冲区消息还是从协议缓冲区消息构造/填充

来自分类Dev

为什么WebGL“清除”吸引前端缓冲区?

来自分类Dev

绑定帧缓冲区还是设置ReadBuffer?

来自分类Dev

WebGL。是否在GPU中创建缓冲区?

来自分类Dev

在webgl中共享缓冲区

来自分类Dev

从jni返回的字节缓冲区是副本还是引用?

来自分类Dev

多个缓冲区还是单个缓冲区?

来自分类Dev

更新WebGL 2中的统一缓冲区数据?

来自分类Dev

比较缓冲区

来自分类Dev

Ionic 4协议缓冲区

来自分类Dev

通过WebGL支持模板缓冲区

来自分类Dev

Webgl:销毁或重用缓冲区/纹理?

来自分类Dev

WebGL中的模板缓冲区

来自分类Dev

WebGL:同时使用纹理和颜色缓冲区

来自分类Dev

使用单个顶点缓冲区还是多个顶点缓冲区?

来自分类Dev

nodejs缓冲区是异步还是同步?

来自分类Dev

使用颜色缓冲区时WebGL渲染失败

来自分类Dev

更新WebGL 2中的统一缓冲区数据?

来自分类Dev

谷歌大查询 - 从缓冲区刷新数据(缓冲区上的 4 天数据)

来自分类Dev

示例默认 WebGL 颜色缓冲区

来自分类Dev

WebGL 渲染缓冲区