我有一个奇怪的问题,我的所有模型都正确渲染。当我将模型从使用共享顶点(顶点集 + 索引数组)更改为使用重复顶点(需要这样做才能对我的模型进行纹理处理)时,我的所有模型在使用共享顶点时都可以正常工作。当我对重复的顶点进行交换时,除了我的一个模型之外,它们都可以工作,我不知道为什么。巧合的是,它是顶点数最多的模型(共享时为 20,复制时为 108),因此可能与此有关。
到目前为止我为尝试纠正这个问题所做的工作:
- 从头开始重新创建模型(这是一项简单的任务,因为它是一个非常简单的模型)
- 新模型没有正确渲染,将模型改回共享顶点,再次工作(不能像这样纹理它虽然没有帮助)
- 将我的索引数组从 GLubyte 更改为 GLushort 以防出现一些数据类型问题
- 玩弄索引数组的绘制顺序,看看它是否是某种三角形缠绕问题,这似乎不是这种情况(也取消了背面剔除以检查)
我所有的模型都是基本形状,金字塔,立方体......直到二十面体。十二面体是产生问题的形状(看起来像一个 12 面骰子)。当绘制形状所需的 36 个三角形中仅显示大约 8 个时,其余部分是透明的或根本不存在。我使用 SoftImage 以相同的方式制作了所有模型,所以我真的不认为这与模型本身有关。在可见的三角形上,纹理显示正确。所有模型同时出现在屏幕上,因此可以排除任何可能不是特定于渲染模型的内容。它们也使用相同的函数进行渲染,只是具有不同的数组。
关于我可以采取哪些步骤来找出可能导致这种情况的任何建议?
这是使用重复顶点的模型的样子http://pastebin.com/2hg7D0Ga 这里是共享的http://pastebin.com/tUqTUM91
也许如果你有可以渲染这些模型的东西,你可以在你的应用程序中快速测试它们,看看它是否适合你
这是我的相关渲染代码http://pastebin.com/fRiKM89M
这是模型未正确渲染时的样子http://imgur.com/2u4el
我希望有人能发现我忽略的东西。感谢您花时间阅读所有这些,如果您已经做到了这一点