为什么BufferViews和访问者的单独的glTF?

问题描述 投票:1回答:1

所述GLTF格式指定了网格经由存取引用它们的顶点和索引数据,而这又参考BufferViews。他们都有一个偏移量和长度。

主要的区别似乎是BufferViews是格式无关,它们只是参考一串字节,而访问器添加类型信息。

我不明白的是:

  1. 为什么他们都需要一个偏移量和长度?其使用情况是那里的在一个存取偏移不是零和一个存取的计数不对应于该视图的长度?
  2. 为什么不类型的数据直接包含在缓冲区中的看法?在什么情况下使用它是有意义的解释不同格式相同的数据?
graphics 3d gltf
1个回答
2
投票

的格式被设计为支持交错顶点属性,最初从WebGL的(在glTF 1.0),但现在更普遍地跨越图形API(在glTF 2.0)。

例如,POSITION数据可以是vec3FLOAT,但TEXCOORD_0数据可以是vec2FLOAT,并且甚至有可能是不同类型的自定义属性,所有单个GPU缓冲器内交织。

所以BufferView定义了一个给定的字节步幅,和个人存取到这一观点可以有不同的类型和数量,但会都有着相同的字节步幅。

你不需要交错当然的,但格式被设计成允许它,并强制执行字节步幅共享,当它发生。

下面是来自glTF教程的Data Interleaving section图。这是一个有点小,但在这里,你可以点击查看大图。在这个例子中,有两个访问,一个卡位和一个用于正常,共享一个BufferView。

Data Interleaving

© www.soinside.com 2019 - 2024. All rights reserved.