wavefront obj模型加载器索引问题

时间:2012-08-20 06:00:42

标签: android indexing buffer .obj wavefront

大家好,我很难让.obj波前文件使用IBO正确呈现。

现在我写了一个解析器,它现在非常简单,但它加载了顶点和法线。如果我绑定解析的顶点和法线,我会得到很好的结果,但如果我将索引绑定为GL_element ......我会得到一个热点。

现在我已经做了大约一个星期的工作,我已经在这里检查了至少20页,最后决定提问。

我不确定什么是错的,所以我带了我的代码,我写到控制台的一些调试信息,我从程序写的文件,截图和视频。我真的希望有人可以帮助我摆脱这个驼峰。

pastebin:http://pastebin.com/uZs74DSn

你可以从pastebin中看到我已经通过从所有索引中减去一个来计算.obj文件不是零。

视频: 1. http://www.youtube.com/watch?v=tfqhDEMCjPA&feature=plcp猴子解析并用glarrays绘制。

  1. http://www.youtube.com/watch?v=SDeJk7sv2ZA&feature=plcp解析完全相同的模型,但使用gldrawelements绘制。

  2. http://www.youtube.com/watch?v=3_HS8Q7FXsk&feature=plcp球体解析并绘制了gldrawelements

  3. http://www.youtube.com/watch?v=w6Oqy3JdTRg&feature=plcp我在opengame上找到的模型,用lineloops渲染,但是因为我使用了glarray,所以很好。

  4. http://www.youtube.com/watch?v=xHiCcK5QuE0&feature=plcp渲染了许多基本形状,光线充足,光线充足。

  5. 我真的很茫然,希望那里有人可以帮助我摆脱这个驼峰。我想继续学习着色器。对于那里的人来说这可能是微不足道的,我希望他们能够停下来并给出一个指导性的想法!

    bluBee

1 个答案:

答案 0 :(得分:0)

经过第二次观察,我认为真正发生的是你的补偿不是你认为的那样。您正在读取数据,并且顶点正在重复,并且您将多次重复数据写入顶点缓冲区。因此,当您稍后想要引用索引4时,实际上您在顶点数组的该位置处具有顶点2的数据。

尝试对顶点数据进行预排序并将其全部写出,以使顶点数组不大于[max_index_number * 3],然后按原样流式传输索引。我认为这可能有用。