2

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

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

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

我不太确定出了什么问题,所以我带来了我的代码、我写到控制台的一些调试信息、我从程序中写出的文件、屏幕截图和视频。我真的希望这里有人可以帮助我度过这个难关。

粘贴箱:http : //pastebin.com/uZs74DSn

您可以从 pastebin 中看到,我已经通过从所有索引中减去 1 来说明 .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球体解析和绘制 wigh gldrawelements

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

  4. http://www.youtube.com/watch?v=xHiCcK5QuE0&feature=plcp许多基本的形状被渲染并且光线充足,带有 glarrays。

我真的很茫然,希望有人能帮助我度过这个难关。我想继续学习着色器。这对外面的人来说可能是微不足道的,我希望他们能够停下来并给出指导意见!

蓝蜂

4

1 回答 1

0

再看一遍,我认为真正发生的事情是您的偏移量不是您认为的那样。您正在读取数据,并且顶点正在重复,并且您将重复数据多次写入顶点缓冲区。因此,当您稍后想要引用索引 4 时,实际上您在顶点数组的该位置拥有来自顶点 2 的数据。

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

于 2012-08-21T01:41:21.597 回答