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");
|
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)
|
static inline bool gl_tex_param_i(GLenum target, GLenum param, GLint val)
|
||||||
{
|
{
|
||||||
glTexParameteri(target, param, 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)
|
else if (sampler->max_anisotropy > max_anisotropy_max)
|
||||||
sampler->max_anisotropy = max_anisotropy_max;
|
sampler->max_anisotropy = max_anisotropy_max;
|
||||||
|
|
||||||
|
vec4_from_rgba(&sampler->border_color, info->border_color);
|
||||||
|
|
||||||
blog(LOG_DEBUG,
|
blog(LOG_DEBUG,
|
||||||
"convert_sampler_info: 1 <= max_anisotropy <= "
|
"convert_sampler_info: 1 <= max_anisotropy <= "
|
||||||
"%d violated, selected: %d, set: %d",
|
"%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;
|
success = false;
|
||||||
if (!gl_tex_param_i(tex->gl_target, GL_TEXTURE_WRAP_R, ss->address_w))
|
if (!gl_tex_param_i(tex->gl_target, GL_TEXTURE_WRAP_R, ss->address_w))
|
||||||
success = false;
|
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 (GLAD_GL_EXT_texture_filter_anisotropic) {
|
||||||
if (!gl_tex_param_i(tex->gl_target,
|
if (!gl_tex_param_i(tex->gl_target,
|
||||||
GL_TEXTURE_MAX_ANISOTROPY_EXT,
|
GL_TEXTURE_MAX_ANISOTROPY_EXT,
|
||||||
|
|
|
@ -419,6 +419,7 @@ struct gs_sampler_state {
|
||||||
GLint address_v;
|
GLint address_v;
|
||||||
GLint address_w;
|
GLint address_w;
|
||||||
GLint max_anisotropy;
|
GLint max_anisotropy;
|
||||||
|
struct vec4 border_color;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void samplerstate_addref(gs_samplerstate_t *ss)
|
static inline void samplerstate_addref(gs_samplerstate_t *ss)
|
||||||
|
|
Loading…
Reference in New Issue