1

我已经成功地在 java 中创建了一个对象加载器,它加载顶点、索引、纹理坐标和法线。对象加载器从 Wavefont OBJ 文件中读取。

它相对简单,但是一旦我尝试使用纹理坐标索引和普通索引加载更复杂的文件,我不知道如何处理这些额外的索引集?我也找不到任何 opengl(或在本例中为 opengl es 1.1)方法来解析纹理和法线索引。这不仅在 opengl for android 中困扰着我,而且以前在 webgl 中也是如此,所以任何帮助都将不胜感激。有这么多教程讨论如何加载顶点、索引、纹理坐标和法线,这很烦人,但我还没有看到一个(对于 opengl es)它们在纹理和法线索引中加载的地方。

我是否必须根据索引重新排序或重建纹理坐标/法线数组?或者我缺少一些功能或者?

4

1 回答 1

2

但我还没有看到一个(对于opengl es)它们加载纹理和正常索引的地方。

这是有原因的:你不能。这通常是 Wavefront OBJ 格式不适合加载到 OpenGL/D3D 应用程序的原因。

每个顶点,每个位置/法线/texCoord/etc 数据的组合,必须是唯一的。如果你在做索引渲染,每个索引指的是 position/normal/texCoord/etc 的特定组合。

简而言之,您只能使用一个索引进行渲染。该索引同时索引到所有属性数组。所以如果你的数据用不同的索引列表索引不同的属性,你必须转换你的数据才能正确地做事。最好的方法是通过某种离线工具。

于 2011-11-15T01:12:27.800 回答