我有一个奇怪的问题,我的所有模型,但一个正在渲染。当我将模型从使用共享顶点(顶点集合+索引数组)更改为使用重复顶点(需要这样做以便能够纹理我的模型)时,我的所有模型在使用共享顶点时都能正常工作。当我交换到重复的顶点时,除了我的一个模型之外它们都工作,我无法找出原因。巧合的是顶点数量最多的模型(共享时为20,复制时为108),所以可能与顶点有关。
到目前为止我所做的是尝试纠正这个问题:
我所有的模型都是基本形状,金字塔,立方体......直到二十面体。十二面体是给出问题的形状(看起来像12面骰子)。当渲染时,绘制形状所需的36个三角形中只有8个出现,其余部分是透明的或根本不存在。我使用SoftImage以相同的方式制作了所有模型,所以我真的不认为它与模型本身有关。在可见的三角形上,纹理显示正确。所有模型同时出现在屏幕上,因此可以排除任何可能不是特定于渲染模型的模型。它们也使用相同的函数进行渲染,只有不同的数组。
我可以采取哪些步骤找出导致此问题的原因?
这是模型使用重复顶点http://pastebin.com/2hg7D0Ga的样子 这是共享的http://pastebin.com/tUqTUM91
也许如果您有可以渲染这些模型的东西,您可以在应用程序中快速测试它们并查看它是否适合您
这是我的相关呈现代码http://pastebin.com/fRiKM89M
这是模型无法正确呈现时的样子http://imgur.com/2u4el
我希望有人能发现我忽略的东西。感谢您花时间阅读所有这些,如果你已经做到这一点
答案 0 :(得分:0)
好的,我现在觉得有点蠢,但这是一个诚实的错误。如果你查看我的代码,我有NumVertices等,那些都是GLubytes,我完全忘了,我假设我已经将它们定义为int的。所以在一个具有最多顶点的模型上,该数字超过了GLubyte max 255,但其他模型都没有。
真的很简单修复这么复杂的错误哇!当OpenGL中断时,它总是会让你觉得技术上出现了问题并忽略了简单的问题