OBS图形及渲染
+ -

OBS精灵顶点坐标vb

2024-05-24 12 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,是否有法线分量等。

0 篇笔记 写笔记

作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!