vertex_update_buffer_from_buffer

该函数使用给定缓冲区中的数据更新顶点缓冲区的内容。

重要信息 您无法将 冻结 顶点缓冲区作为目标缓冲区传递。

使用说明

 

语法:

vertex_update_buffer_from_buffer(dest_vbuff, dest_offset, src_buffer[, src_offset, src_size]);

参数类型描述
dest_vbuffVertex Buffer要复制到的顶点缓冲区
dest_offsetReal开始写入数据的目标缓冲区中的偏移量
src_bufferBuffer要复制的源缓冲区
src_offsetReal可选 开始复制的源缓冲区中的偏移量 (以字节为单位)。默认为 0。
src_sizeReal可选 要从源缓冲区复制的数据大小 (以字节为单位)。默认为 -1。当 -1 时,复制整个缓冲区。

 

返回:

N/A

 

例子:

vertex_format_begin();
vertex_format_add_position_3d();     // Three buffer_f32 values
vertex_format_add_texcoord();        // Two buffer_f32 values
vertex_format = vertex_format_end();

var _i = 0, _vertex_size = (3 + 2) * buffer_sizeof(buffer_f32), _buff = buffer_create(1000, buffer_fixed, 4);
repeat(51)
{
    repeat(3) buffer_write(_buff, buffer_f32, random(500));        // x, y, z
    repeat(2) buffer_write(_buff, buffer_f32, ((_i++ mod 6) < 3)); // u, v
}

vb = vertex_create_buffer_from_buffer_ext(_buff, vertex_format, 0, 30);
vertex_update_buffer_from_buffer(vb, 0, _buff, 40 * _vertex_size, 3 * _vertex_size);

上面的代码首先创建一个新的顶点格式,其中包含 3D 位置属性和纹理坐标属性。然后它初始化几个临时变量:循环计数器、源缓冲区和单个顶点的字节大小。(3 + 2) 指的是用于存储位置的三个浮点值和用于存储 UV 坐标的两个浮点值。然后,缓冲区会填充一些随机值,以创建总共 51 个随机定位的顶点或 17 个三角形,并存储为 pr_trianglelist( 请参阅 基元类型常量 )。之后,从缓冲区中的前 30 个顶点创建一个新的顶点缓冲区。最后,通过调用 vertex_update_buffer_from_buffer; 更新此顶点缓冲区中的前三个顶点 ; 它们被原始缓冲区中顶点索引 40、41 和 42 的数据覆盖。