从Wavefront OBJ格式加载“indices”

4
我正在开发一个使用OpenGL ES 2.0的Android应用程序。
我想要加载使用Blender 2.49b制作的Wavefront OBJ格式的导出文件。我已经确定了顶点位置、法线和纹理。
我想要使用glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)来绘制我的网格,但是我不知道如何从Wavefront OBJ文件中获取最后一个参数indices。
面是我正在寻找的“indices”吗?
我在论坛上找到了这个: faces = indices starting with 1!
“从1开始!”的意思是什么?
谢谢。
2个回答

6
这意味着第一个索引是1而不是零。Java/C数组/集合使用基于零的索引,第一个元素从零开始。Wavefront OBJ格式索引以1开头。
面由3个值v/vt/vn组成,它们是索引。索引不直接在文件格式中指定。相反,它是v、vt、vn元素在文件中出现的顺序。因此,在解析文件时,您必须跟踪遇到了多少个顶点、顶点纹理和顶点法线。
有关该格式的所有详细信息,请参阅规范。 http://www.martinreddy.net/gfx/3d/OBJ.spec

0

Wavefront .obj 格式中没有索引。

当你从文件加载网格数据时,需要指定索引。

我的建议是:

iterate per face:
    iterate every vertex of a face
        assign index here when you store the data to your own project's vector

换句话说,对于这些代码行中的每一行:

f 3/55/23 34/2/12 34/43/128
f ...

对于每个属性三元组,引入一个新的顶点(存储在顶点缓冲区中)和一个新的索引(存储在索引缓冲区中)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接