Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphics gfx rs中如何处理索引缓冲区的更新?_Graphics_Rust - Fatal编程技术网

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