所述GLTF格式指定了网格经由存取引用它们的顶点和索引数据,而这又参考BufferViews。他们都有一个偏移量和长度。
主要的区别似乎是BufferViews是格式无关,它们只是参考一串字节,而访问器添加类型信息。
我不明白的是:
的格式被设计为支持交错顶点属性,最初从WebGL的(在glTF 1.0),但现在更普遍地跨越图形API(在glTF 2.0)。
例如,POSITION
数据可以是vec3
的FLOAT
,但TEXCOORD_0
数据可以是vec2
的FLOAT
,并且甚至有可能是不同类型的自定义属性,所有单个GPU缓冲器内交织。
所以BufferView
定义了一个给定的字节步幅,和个人存取到这一观点可以有不同的类型和数量,但会都有着相同的字节步幅。
你不需要交错当然的,但格式被设计成允许它,并强制执行字节步幅共享,当它发生。
下面是来自glTF教程的Data Interleaving section图。这是一个有点小,但在这里,你可以点击查看大图。在这个例子中,有两个访问,一个卡位和一个用于正常,共享一个BufferView。