关于.obj 3d模型格式和VBO

时间:2013-02-19 10:16:14

标签: opengl vbo .obj

.obj模型中v,vn和vt的数量是否相同?我问它是因为我每次只能使用一个索引,所以我有使用VBO

struct VertexCoord
{
float x,y,z,w;
float nx,ny,nz;
float u,v;
};

所以我可以通过跨越偏移来为所有缓冲区使用一个索引。

1 个答案:

答案 0 :(得分:1)

不,v,vt,vn的数量可以不同。

注意有一个“v”列表,然后列出“vt”,“vn”等...

最后有一个面孔列表:1/2 / 3,4 / 5/4等。 面对索引顶点pos,纹理坐标,法线,但由于这些索引彼此无关,这也意味着vers的数量可能不同。

只有当面部列表看起来像“1/1/1”,“4/4/4”时,我们才会有相同的属性。

这有点难以解释,但我希望你明白这一点:)

因此,一般情况下,您无法直接将obj数据映射到VBO结构中。 在OpenGL中,您当然可以使用索引几何,但这意味着每个特定顶点的所有属性都有一个索引。你不能分别索引位置,纹理坐标。你必须以某种方式重新安排数据。

这里有一些链接:

http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_Load_OBJ

http://xiangchen.wordpress.com/2010/05/04/loading-a-obj-file-in-opengl/