From e98fdea344f173c59b11549432b20114081a58b1 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Thu, 25 Jan 2024 23:19:03 +0000 Subject: Add traits helpers for glTexParameter functions --- lib/gl_traits.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib') diff --git a/lib/gl_traits.h b/lib/gl_traits.h index f641131..14ac9d8 100644 --- a/lib/gl_traits.h +++ b/lib/gl_traits.h @@ -42,6 +42,8 @@ template<> struct gl_traits : public gl_traits_float { static constexpr auto glUniformFunc {&glUniform1f}; static constexpr std::array glUniformvFunc {&glUniform1fv, &glUniform2fv, &glUniform3fv, &glUniform4fv}; static constexpr std::array glUniformmFunc {&glUniformMatrix2fv, &glUniformMatrix3fv, &glUniformMatrix4fv}; + static constexpr auto glTexParameterFunc {&glTexParameterf}; + static constexpr auto glTexParameterfFunc {&glTexParameterfv}; }; template<> struct gl_traits : public gl_traits_longfloat { @@ -60,6 +62,8 @@ template<> struct gl_traits : public gl_traits_integer { static constexpr GLenum type {GL_INT}; static constexpr auto glUniformFunc {&glUniform1i}; static constexpr std::array glUniformvFunc {&glUniform1iv, &glUniform2iv, &glUniform3iv, &glUniform4iv}; + static constexpr auto glTexParameterFunc {&glTexParameteri}; + static constexpr auto glTexParameterfFunc {&glTexParameteriv}; }; template<> struct gl_traits : public gl_traits_integer { @@ -104,6 +108,10 @@ template concept has_glUniformNv = requires { gl_traits::glUniformvFunc; }; template concept has_glUniformMatrixNv = requires { gl_traits::glUniformmFunc; }; +template +concept has_glTexParameter = requires { gl_traits::glTexParameterFunc; }; +template +concept has_glTexParameterf = requires { gl_traits::glTexParameterfFunc; }; template void @@ -147,3 +155,17 @@ glUniform(GLint location, std::span> v) (*gl_traits::glUniformmFunc[L - 2])( location, static_cast(v.size()), GL_FALSE, glm::value_ptr(v.front())); } + +template +void +glTexParameter(GLenum target, GLenum pname, T param) +{ + (*gl_traits::glTexParameterFunc)(target, pname, param); +} + +template +void +glTexParameter(GLenum target, GLenum pname, const glm::vec & param) +{ + (*gl_traits::glTexParameterfFunc)(target, pname, glm::value_ptr(param)); +} -- cgit v1.2.3