.obj模型中v,vn和vt的数量是否相同?我问它是因为我每次只能使用一个索引,所以我有使用VBO
struct VertexCoord
{
float x,y,z,w;
float nx,ny,nz;
float u,v;
};
所以我可以通过跨越偏移来为所有缓冲区使用一个索引。
答案 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/