【问题标题】:About .obj 3d model format and VBO关于 .obj 3d 模型格式和 VBO
【发布时间】:2013-02-19 10:16:14
【问题描述】:

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

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

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

【问题讨论】:

  • 这有什么关系?您应该自己从从 .obj 加载的数据构造一个 VBO。

标签: opengl vbo .obj


【解决方案1】:

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

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

最后有一张面孔列表:1/2/3、4/5/4 等。 Faces 索引顶点 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/

【讨论】:

  • 但我不能在绘制一个 VBO 时使用不同的索引?这就是我感到困惑的地方。我分别加载了顶点,我不知道加载面后该怎么做。也许在加载后根据面部数据重新排序,然后我不需要使用 glDrawArrays 因为我已经排序了列表。我很困惑:/
猜你喜欢
  • 2020-12-11
  • 2022-08-10
  • 2012-08-12
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2020-08-05
  • 2019-05-11
相关资源
最近更新 更多