尝试在webgl中渲染3d模型时出现奇怪的问题

时间:2011-06-15 01:09:57

标签: google-chrome 3d render webgl

所以基本上我正在尝试创建一个模型加载器,它将接收wavefont obj文件并在webgl中呈现它们。最后,我希望能够旋转,翻译和缩放这些对象。

我有界面所有设置,它很好地工作。但是我在渲染方面遇到了问题。

我已经接受了一个obj文件,并检查了所有数组都有正确数量的元素,我甚至使用chromes webgl调试插件进行了检查,看起来数组匹配(甚至元素值匹配)。

顶点数:10932 指数数量:18960

无论如何当我运行gl.drawElements(gl.TRIANGLES,numItems,gl.UNSIGNED_SHORT,0)时; 我没有得到chrome错误但是在webgl插件调试中我得到了'INVALID_OPERATION'而没有其他信息。

我发现通过将numItems(通常是index / 18960的数量)更改为更低的数字,它将呈现茶壶(略有错误)。出于某种原因,幸运数字是11034,如果我超过这个,它就不会渲染,如果我低于它会使我的略微错误的茶壶。我需要这个数字真的是全部索引,显然我不能硬编码数字。

所以我很困惑为什么会发生这种情况,因为我的调试完整代码: http://webdesignscript.net/assignment/graphics_a3/

渲染部分代码: http://webdesignscript.net/assignment/graphics_a3/scripts/webglengine.js

加载的茶壶模型: http://webdesignscript.net/assignment/graphics_a3/models/teapot.obj

干杯,乔希

1 个答案:

答案 0 :(得分:1)

我希望你记得OBJ文件中的面使用从1开始的顶点索引,而不是0.所以也许那些后面的面(使它崩溃或不起作用)只引用一个无效的顶点(一个超过结尾) 。如果是这样,只需从文件读取后从面的顶点索引中减去1。