OBS精灵顶点坐标vb
2024-05-24
18
0
sprite顶点坐标使用函数graphics_init_sprite_vb实现,其初始化位于立即顶点坐标之后。
static bool graphics_init_sprite_vb(struct graphics_subsystem *graphics)
{
struct gs_vb_data *vbd;
vbd = gs_vbdata_create();
vbd->num = 4;
vbd->points = bmalloc(sizeof(struct vec3) * 4);
vbd->num_tex = 1;
vbd->tvarray = bmalloc(sizeof(struct gs_tvertarray));
vbd->tvarray[0].width = 2;
vbd->tvarray[0].array = bmalloc(sizeof(struct vec2) * 4);
memset(vbd->points, 0, sizeof(struct vec3) * 4);
memset(vbd->tvarray[0].array, 0, sizeof(struct vec2) * 4);
graphics->sprite_buffer = graphics->exports.device_vertexbuffer_create(
graphics->device, vbd, GS_DYNAMIC);
if (!graphics->sprite_buffer)
return false;
return true;
}
同样的配方,申请精灵坐标内存,然后使用device_vertexbuffer_create函数来初始化。具体过程可详见立即顶坐标的分析https://www.pnpon.com/article/detail-682.html 。
从代码来看,其只是配置不同,如数量num,是否有法线分量等。