是否有任何直接支持顶点缓冲区对象的建模格式?
目前我的游戏引擎一直在使用Wavefront Models,但我一直将它们与即时模式和显示列表一起使用。这可行,但我想将我的整个系统升级到现代 OpenGL,包括着色器。我知道我可以使用即时模式并通过着色器显示列表,但像大多数有抱负的开发人员一样,我希望我的游戏能够做到最好。在问了上面链接的问题后,我很快意识到 Wavefront 模型根本不支持顶点缓冲区。这主要是由于模型的索引方式。为了使用顶点缓冲区对象,顶点、纹理坐标和法线数组都需要长度相等。
我可以通过编写自己的转换器来实现这一点,我已经这样做了。本质上,我展开索引并创建关联的数组。我什至不需要完全使用glDrawElements
,我可以使用glDrawArrays
,我做得很好。唯一的问题是我实际上是在复制数据;阵列变得庞大(尤其是大型模型),这对我来说似乎是错误的。当然,必须有一种现代方法将模型初始化为顶点缓冲区,而无需完全展开索引。所以我有两个问题。
1. 他们是否有任何支持直接顶点缓冲区对象的现代模型格式/概念?
2. 这已经是行业标准了吗?大多数游戏引擎是否在运行时展开索引(并膨胀数组,也称为解包)以创建游戏世界资产?