obs_core_video_mix
+ -

渲染到纹理

2024-07-02 12 0

渲染这里使用函数draw_mix_texture实现。这里的渲染使用的是HLSL实现的。
首先通过mix_idx获取需要被渲染到的纹量,然后获取其着色器effect指针和相应的参数。
使用gs_effect_set_texture_srgb置当前纹理为渲染纹理。

static inline void draw_mix_texture(const size_t mix_idx)
{
//获取纹理
    gs_texture_t *tex = obs->video.mixes.array[mix_idx]->render_texture;

//获取特效及参数
    gs_effect_t *effect = obs_get_base_effect(OBS_EFFECT_DEFAULT);
    gs_eparam_t *param = gs_effect_get_param_by_name(effect, "image");

//设置为当前纹理
    gs_effect_set_texture_srgb(param, tex);

//渲染
    gs_enable_framebuffer_srgb(true);
    while (gs_effect_loop(effect, "Draw"))
    {
        gs_draw_sprite(tex, 0, 0, 0);
    }
    gs_enable_framebuffer_srgb(false);
}

0 篇笔记 写笔记

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

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

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