OBS精灵顶点坐标vb
			 2024-05-24
			  37
			 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,是否有法线分量等。
 OBS图形及渲染
			OBS图形及渲染
			




