0

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

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

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

4

1 回答 1

1

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

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

最后有一个面列表:1/2/3、4/5/4 等。面索引顶点 pos、纹理坐标、法线,但由于这些索引彼此不相关,这也意味着版本可以不同。

只有当面孔列表看起来像“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/

于 2013-02-19T12:43:51.580 回答