抱歉,我要在您的问题线程中添加一条评论,但发现我最终花了太多精力。我的开发经验是从DX 11角度出发的,因此其中某些可能无法在OpenGL中使用
数据的存储位置当然起着重要的作用。但是,还有其他一些因素会影响数据的宽度,如您所知。我有一些GPU,并且在某些临界点的基础上,性能却出现了明显下降。举例来说,例如,在我的旧AMD r290上,您基本上可以将最多4个float4s传递到顶点缓冲区,而不会花费超过1的额外费用,但是一旦我发布> 4,则存在可测量的下降(帧内)率)。这纯粹是我的回忆,所以轶事也是最好的。但是它认为GPU架构一直在变化,今天能为您带来性能优势的利基技术可能是明天性能的祸根。一世'
话虽如此,您已经提出了有关对顶点进行排序的问题,当然这会有所帮助。当您将其与索引缓冲区结合使用时,性能将得到提高,从而使硬件能够优化和缓存已计算的顶点。当然,您可以从三角条等中获得更多收益,这些三角条可以根据您的想法专门订购。我所做的大多数模型渲染都是带有实例化的基于索引/顶点的优化模型,我对循环运动效果(例如,树枝)使用少量查找,在这些情况下,树的整个分支都在查找相同的值。因此缓存也可以在这里利用。
我可以总结一下:
- 在开始开发游戏/应用程序时,请不要一开始就考虑过优化,不要过早优化。如果您需要返回并添加新功能,则可能会花费所有精力。您有我的习惯,也许> <,喜欢尝试获得最佳性能和技术
- GPU架构各不相同,一个架构的优势可以反映另一个架构的劣势。AMD和Nvidia以使开发人员针对其架构优化游戏而闻名,这在一定程度上有其优点/缺点。在开发中走一条中间路可能是最好的地方,不要使用任何基于硬件供应商的功能(此处有意见)。(此外,某些打包格式仅在AMD中存在)。
这些只是我的一些想法和经验。那里有很多书,您应该着手解决这些主题。我还没有看到很多规定您要提出的建议,但这并不意味着错误。祝好运。