0

可能重复:
渲染具有多个索引的网格

这是关于使用索引缓冲区来呈现自定义几何图形,例如来自 OBJ 文件。我对 3d 图形约定略知一二,但我对 WebGL 没有做太多的事情。我的问题的简短形式是“您如何在 WebGL 中使用索引缓冲区?”

我想做的是,对于一个自定义几何体,构建一个正在运行的位置向量列表和一个正在运行的 UV 向量列表(让我们跳过法线)。然后,当我去绘制三角形时,我只想用指向三个现有位置向量的指针和指向三个现有 UV 向量的指针来定义每个三角形。(仅仅是因为这就是 OBJ 的设置方式)

从我读过的内容来看(我发誓我用谷歌搜索了一百种不同的方法,但无法得到结论性的答案),你必须将 UV 和位置集中在一起作为一个顶点,然后将三角形定义为指向三个的指针这些顶点。但是当 UV 列表的长度与位置列表的长度不同时会发生什么?

可以说我有一个立方体。那是八个位置向量。但是考虑到每个面都具有相同的方形 UV 布局(渲染时每一面应该看起来相同)。那是四个(唯一的)UV。怎么办?

就像我必须放弃这种方法,咬紧牙关,为所有 12 个三角形定义每个位置和 UV——以沿立方体边缘重复位置向量和沿面对角线重复 uv 为“代价”。如果这是公认的做法,那很好,我只是想确保我以正确的方式进行。

4

2 回答 2

1

包含顶点位置、纹理坐标、法线等的数组的长度必须相同。这在许多情况下意味着冗余数据。多维数据集是冗余特别糟糕的一个示例。实际上,您必须传入 24 个顶点和 24 个 texcoords。

于 2012-10-18T20:55:00.073 回答
0

您已经听说过不能重复使用立方体顶点,但是对于一些额外的上下文,请注意现代 3D 内容有很多光滑的非平面;因此三角形之间的大多数连接可以共享顶点,因为它们具有相同的法线和其他属性。属性不连续的锐边是不太常见的情况,因此不应对其进行优化。

于 2012-10-19T00:56:29.067 回答