从Wavefront OBJ格式加载“索引”

时间:2010-12-03 14:35:35

标签: android wavefront opengl-es-2.0

我正在开发一个使用OpenGL ES 2.0的Android应用程序。

我想用Wavefront OBJ格式加载用Blender 2.49b制作的导出。我已经确定了verxtex位置,正常和纹理。

我想使用glDrawElements(GLenum模式,GLsizei计数,GLenum类型,const GLvoid *索引)绘制我的网格,但我不知道如何从Wavefront OBJ文件中获取最后一个参数index。 / p>

面对我正在寻找的'指数'吗?

我在论坛上发现了这个: faces =以1开头的索引!

'从1开始'是什么意思?

感谢。

2 个答案:

答案 0 :(得分:3)

这意味着第一个索引是1而不是零。 Java / C数组/集合使用基于零的指示,第一个元素从零开始。 Wavefront OBJ格式索引以1开头。

面构成3个值v / vt / vn,它们是索引。索引不是直接以文件格式指定的。相反,它是v,vt,vn元素在文件中出现的顺序。因此,在解析文件时,您必须跟踪遇到的顶点,顶点纹理和顶点法线的数量。

有关格式的所有详细信息,请参阅规范。

http://www.martinreddy.net/gfx/3d/OBJ.spec

答案 1 :(得分:0)

没有波前.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 ...

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