繁体   English   中英

glTF文件中步幅的属性?

[英]Properties of the stride in a glTF file?

Khronos 文档将步幅定义为:

当缓冲区视图用于顶点属性数据时,它可能具有 byteStride 属性。 该属性定义了每个顶点之间的字节步幅。

我有点困惑,因为我已经尝试过的许多示例(其中 3 个)的步幅为 0,所以直到现在我才忽略了该属性。 这些例子渲染得很好。

我是从类型推断“步幅”。 例如,如果类型是 vec3 而组件类型是浮点数,我每 12 个字节加载一个元素。 我不完全确定阅读规范的一些事情是,

当 stride 为非 0 时,这是否意味着数据可以交错? 当stride为非0时,数据是否可以不连续(例如填充字节)? 换句话说,您是否会遇到缓冲区未交错但sizeof(type_component) * element_count的总大小不是要读取的内存总分段的除数的情况?

是的,访问器(在 glTF 中)就像 OpenGL/WebGL 中的顶点属性,并且允许交错。 步幅在 bufferView 上,以强制共享该 bufferView 的访问器都具有相同的步幅。 零值意味着“紧密包装”。

请注意,您可能会交错不同大小的组件,例如 vec3 (POSITION) 和 vec2 (TEXCOORD_0),因此步幅可能是不同大小的总和。

这是 glTF 教程数据交织部分的图表。 这里有点小,但您可以单击查看更大的视图。 在这个例子中,有两个访问器,一个用于 POSITION,一个用于 NORMAL,共享一个 BufferView。

数据交织

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM