gltf 3D模型的位置、法线、文本线和其他属性是否总是在同一个缓冲区中找到?



我最近开始研究gltf文件,所以如果这个问题看起来很愚蠢,请原谅我。如果在同一缓冲区中找到位置文本等,我没有问题解析文件并在我制作的c++程序中显示模型。但如果他们可以存储在不同的缓冲区,那么我的代码逻辑将无法工作。我一直在寻找一些存储在gltf文件中的3d模型样本,这个想法打动了我,但我找不到任何在不同缓冲区中存储这些属性的文件,所以我想也许它们不能存储在不同的缓冲区中。

在glTF术语中,缓冲区是存储或传输单元,可以是外部.bin文件或嵌入在GLB中。缓冲区包含文件中的所有二进制数据-包括例如动画关键帧,您可能不想将其上传到GPU。

每个缓冲区将包含一个或多个"缓冲区视图",这些是上载到GPU的适当结构。包含顶点属性的缓冲视图保证不包含其他类型的数据。但是单个网格的顶点属性可能会被分割成多个缓冲视图。有几个原因,比如压缩,这可能是正确的选择。参见:缓冲区和缓冲区视图。

如果您需要保证glTF文件遵循特定的顶点缓冲区布局,我建议使用gltfpack或glTF -transform等工具对文件进行预处理。