From e41932ec2fcb5e1b5410737baad7690a8d14a760 Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Mon, 6 Feb 2023 00:40:13 +0200 Subject: [PATCH] [OpenGL library] More texture options --- include/opengl.hpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/include/opengl.hpp b/include/opengl.hpp index f91471e8..d27c9ad1 100644 --- a/include/opengl.hpp +++ b/include/opengl.hpp @@ -138,6 +138,25 @@ namespace OpenGL { DrawAndReadFramebuffer = GL_FRAMEBUFFER }; + // Texture filters + enum Filters { + Nearest = GL_NEAREST, + Linear = GL_LINEAR, + NearestMipmapNearest = GL_NEAREST_MIPMAP_NEAREST, + NearestMipmapLinear = GL_NEAREST_MIPMAP_LINEAR, + LinearMipmapNearest = GL_LINEAR_MIPMAP_NEAREST, + LinearMipmapLinear = GL_LINEAR_MIPMAP_LINEAR + }; + + // Wrapping mode for texture UVs + enum WrappingMode { + ClampToEdge = GL_CLAMP_TO_EDGE, + ClampToBorder = GL_CLAMP_TO_BORDER, + RepeatMirrored = GL_MIRRORED_REPEAT, + Repeat = GL_REPEAT, + MirrorClampToEdge = GL_MIRROR_CLAMP_TO_EDGE + }; + struct Texture { GLuint m_handle = 0; int m_width, m_height; @@ -174,6 +193,26 @@ namespace OpenGL { create(width, height, internalFormat, GL_TEXTURE_2D_MULTISAMPLE, samples); } + void setWrapS(WrappingMode mode) { + glTexParameteri(m_binding, GL_TEXTURE_WRAP_S, static_cast(mode)); + } + + void setWrapT(WrappingMode mode) { + glTexParameteri(m_binding, GL_TEXTURE_WRAP_T, static_cast(mode)); + } + + void setWrapR(WrappingMode mode) { + glTexParameteri(m_binding, GL_TEXTURE_WRAP_R, static_cast(mode)); + } + + void setMinFilter(Filters filter) { + glTexParameteri(m_binding, GL_TEXTURE_MIN_FILTER, static_cast(filter)); + } + + void setMagFilter(Filters filter) { + glTexParameteri(m_binding, GL_TEXTURE_MAG_FILTER, static_cast(filter)); + } + #ifdef OPENGL_DESTRUCTORS ~Texture() { free(); } #endif