libobs-opengl: Fix border color support on GL textures
parent
b4b396411a
commit
8ed8301452
|
@ -173,6 +173,12 @@ static inline bool gl_tex_param_f(GLenum target, GLenum param, GLfloat val)
|
|||
return gl_success("glTexParameterf");
|
||||
}
|
||||
|
||||
static inline bool gl_tex_param_fv(GLenum target, GLenum param, GLfloat *val)
|
||||
{
|
||||
glTexParameterfv(target, param, val);
|
||||
return gl_success("glTexParameterf");
|
||||
}
|
||||
|
||||
static inline bool gl_tex_param_i(GLenum target, GLenum param, GLint val)
|
||||
{
|
||||
glTexParameteri(target, param, val);
|
||||
|
|
|
@ -199,6 +199,8 @@ void convert_sampler_info(struct gs_sampler_state *sampler,
|
|||
else if (sampler->max_anisotropy > max_anisotropy_max)
|
||||
sampler->max_anisotropy = max_anisotropy_max;
|
||||
|
||||
vec4_from_rgba(&sampler->border_color, info->border_color);
|
||||
|
||||
blog(LOG_DEBUG,
|
||||
"convert_sampler_info: 1 <= max_anisotropy <= "
|
||||
"%d violated, selected: %d, set: %d",
|
||||
|
@ -473,6 +475,13 @@ static bool load_texture_sampler(gs_texture_t *tex, gs_samplerstate_t *ss)
|
|||
success = false;
|
||||
if (!gl_tex_param_i(tex->gl_target, GL_TEXTURE_WRAP_R, ss->address_w))
|
||||
success = false;
|
||||
if (ss->address_u == GL_CLAMP_TO_BORDER ||
|
||||
ss->address_v == GL_CLAMP_TO_BORDER ||
|
||||
ss->address_w == GL_CLAMP_TO_BORDER) {
|
||||
if (!gl_tex_param_fv(tex->gl_target, GL_TEXTURE_BORDER_COLOR,
|
||||
ss->border_color.ptr))
|
||||
success = false;
|
||||
}
|
||||
if (GLAD_GL_EXT_texture_filter_anisotropic) {
|
||||
if (!gl_tex_param_i(tex->gl_target,
|
||||
GL_TEXTURE_MAX_ANISOTROPY_EXT,
|
||||
|
|
|
@ -419,6 +419,7 @@ struct gs_sampler_state {
|
|||
GLint address_v;
|
||||
GLint address_w;
|
||||
GLint max_anisotropy;
|
||||
struct vec4 border_color;
|
||||
};
|
||||
|
||||
static inline void samplerstate_addref(gs_samplerstate_t *ss)
|
||||
|
|
Loading…
Reference in New Issue