簡體   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