gpt4 book ai didi

c++ - 在glTF文件中跨步的属性?

转载 作者:行者123 更新时间:2023-12-03 07:22:55 25 4
gpt4 key购买 nike

Khronos文档将步幅定义为:

When a buffer view is used for vertex attribute data, it may have a byteStride property. This property defines the stride in bytes between each vertex.


我有些困惑,因为我已经尝试过的许多示例(其中3个)的步幅为0,所以到目前为止我只是忽略了该属性。这些例子很好。
我从类型中推断出“大步向前”。例如如果类型是vec3,并且组件类型是float,则每12个字节作为一个元素加载一次。我对阅读规范并不完全确定,
当跨步为非0时,这是否意味着数据可以交织?
当跨步为非0时,数据是否可以为非连续数据(例如填充字节)?
换句话说,您是否会遇到缓冲区未交错但 sizeof(type_component) * element_count的总大小不等于要读取的内存的总子数的因数的情况?

最佳答案

是的,访问器(在glTF中)类似于OpenGL / WebGL中的顶点属性,并且可以交织。跨步位于bufferView上,以强制共享该bufferView的访问器都具有相同的跨步。零值表示“紧密包装”。
请注意,您可能会交错插入不同大小的组件,例如vec3(POSITION)与vec2(TEXCOORD_0),因此跨度可能是不同大小的总和。
这是来自glTF教程Data Interleaving section的图表。这里有点小,但是您可以单击以查看大图。在此示例中,有两个访问器,一个用于POSITION,一个用于NORMAL,共享一个BufferView。
Data Interleaving

关于c++ - 在glTF文件中跨步的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64546908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com