渲染到纹理
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);
}