Graphics gfx rs中如何处理索引缓冲区的更新?
我发现接受索引缓冲区的唯一方法是:Graphics gfx rs中如何处理索引缓冲区的更新?,graphics,rust,Graphics,Rust,我发现接受索引缓冲区的唯一方法是: let (vbuf, slice) = factory.create_vertex_buffer(&verts, &indices); 这会创建一个新的缓冲区,我不能每帧都这样做 我可以使用编码器更新顶点缓冲区。更新缓冲区(&buf,&data,offset),但我不知道如何更新索引缓冲区。您可以使用创建顶点缓冲区的切片来更新索引缓冲区 切片有一个公共字段,表示索引缓冲区本身,尽管这是调用所需的,而不是 要获取基础缓冲区,请将IndexBuf
let (vbuf, slice) = factory.create_vertex_buffer(&verts, &indices);
这会创建一个新的缓冲区,我不能每帧都这样做
我可以使用编码器更新顶点缓冲区。更新缓冲区(&buf,&data,offset),但我不知道如何更新索引缓冲区。您可以使用创建顶点缓冲区的切片来更新索引缓冲区 切片有一个公共字段,表示索引缓冲区本身,尽管这是调用所需的,而不是 要获取基础缓冲区,请将
IndexBuffer
与您创建的类型匹配,如下所示:
match&slice.buffer{
//在“自动”上,没有索引缓冲区
gfx::IndexBuffer::Auto=>。。。,
//在'Index16'上,索引是'u16'`
gfx::IndexBuffer::Index16(缓冲区)=>。。。,
//在'Index32'上,索引是'u32'`
gfx::IndexBuffer::Index32(缓冲区)=>。。。,
}
根据创建顶点缓冲区时选择的索引缓冲区,在运行时只有一个匹配
在Index16
和Index32
情况下,buffer
将是gfx::handle::buffer
,其中T
是u16
或u32