gpt4 book ai didi

graphics - 如何更新 gfx-rs 中的索引缓冲区?

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

我发现接受索引缓冲区的唯一方法是:

let (vbuf, slice) = factory.create_vertex_buffer(&verts, &indices);

这会创建一个新缓冲区,我不能每帧都这样做。

我可以用 encoder.update_buffer(&buf, &data, offset) 更新顶点缓冲区,但我不知道如何更新索引缓冲区。

最佳答案

您可以使用 slice 更新索引缓冲区。这来自创建顶点缓冲区。
切片有一个公共(public)字段 slice.buffer 表示索引缓冲区本身,尽管这是 gfx::IndexBuffer ,而不是 gfx::handle::Buffer ,这是调用 encoder.update_buffer(...) 所必需的.
为了获得底层缓冲区,匹配 IndexBuffer到您创建的类型,例如:

match &slice.buffer {
// On `Auto`, there is no index buffer
gfx::IndexBuffer::Auto => ...,

// On `Index16`, the indices are `u16`
gfx::IndexBuffer::Index16(buffer) => ...,

// On `Index32`, the indices are `u32`
gfx::IndexBuffer::Index32(buffer) => ...,
}
其中只有一个会在运行时匹配,具体取决于您在创建顶点缓冲区时选择的索引缓冲区。
Index16Index32案例, buffer将是 gfx::handle::Buffer<R, T> , 其中 Tu16u32 .

关于graphics - 如何更新 gfx-rs 中的索引缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47971557/

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