diff --git a/src/assets/assetload_funcs.cpp b/src/assets/assetload_funcs.cpp index f8bcd84d..bad2bbb5 100644 --- a/src/assets/assetload_funcs.cpp +++ b/src/assets/assetload_funcs.cpp @@ -165,7 +165,7 @@ assetload::postfunc assetload::font( textures.emplace_back(nullptr); } else { auto texture = Texture::from(page.get()); - texture->setMipMapping(false); + texture->setMipMapping(false, true); textures.emplace_back(std::move(texture)); } } diff --git a/src/graphics/core/GLTexture.cpp b/src/graphics/core/GLTexture.cpp index a446a88c..f3d752d1 100644 --- a/src/graphics/core/GLTexture.cpp +++ b/src/graphics/core/GLTexture.cpp @@ -71,14 +71,20 @@ void GLTexture::setNearestFilter() { glBindTexture(GL_TEXTURE_2D, 0); } -void GLTexture::setMipMapping(bool flag) { +void GLTexture::setMipMapping(bool flag, bool pixelated) { bind(); if (flag) { glTexParameteri( - GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST + GL_TEXTURE_2D, + GL_TEXTURE_MIN_FILTER, + pixelated ? GL_NEAREST : GL_LINEAR_MIPMAP_NEAREST ); } else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri( + GL_TEXTURE_2D, + GL_TEXTURE_MIN_FILTER, + pixelated ? GL_NEAREST : GL_LINEAR + ); } glBindTexture(GL_TEXTURE_2D, 0); } diff --git a/src/graphics/core/GLTexture.hpp b/src/graphics/core/GLTexture.hpp index 85d7f85d..64fb5489 100644 --- a/src/graphics/core/GLTexture.hpp +++ b/src/graphics/core/GLTexture.hpp @@ -18,7 +18,7 @@ public: virtual void reload(const ImageData& image) override; - virtual void setMipMapping(bool flag) override; + virtual void setMipMapping(bool flag, bool pixelated) override; virtual std::unique_ptr readData() override; virtual uint getId() const override; diff --git a/src/graphics/core/Texture.hpp b/src/graphics/core/Texture.hpp index bc7b73f0..483c93da 100644 --- a/src/graphics/core/Texture.hpp +++ b/src/graphics/core/Texture.hpp @@ -34,7 +34,7 @@ public: virtual uint getId() const = 0; - virtual void setMipMapping(bool flag) = 0; + virtual void setMipMapping(bool flag, bool pixelated) = 0; static std::unique_ptr from(const ImageData* image); }; diff --git a/src/graphics/render/PrecipitationRenderer.cpp b/src/graphics/render/PrecipitationRenderer.cpp index 2b626921..1b138fc8 100644 --- a/src/graphics/render/PrecipitationRenderer.cpp +++ b/src/graphics/render/PrecipitationRenderer.cpp @@ -114,7 +114,7 @@ void PrecipitationRenderer::render( batch->begin(); auto& texture = assets.require(weather.fall.texture); - texture.setMipMapping(false); + texture.setMipMapping(false, true); batch->setTexture(&texture, {}); const struct { diff --git a/src/logic/scripting/lua/usertypes/lua_type_canvas.cpp b/src/logic/scripting/lua/usertypes/lua_type_canvas.cpp index 18352b19..ec086904 100644 --- a/src/logic/scripting/lua/usertypes/lua_type_canvas.cpp +++ b/src/logic/scripting/lua/usertypes/lua_type_canvas.cpp @@ -17,6 +17,7 @@ LuaCanvas::LuaCanvas( void LuaCanvas::createTexture() { mTexture = Texture::from(mData.get()); + mTexture->setMipMapping(false, true); } union RGBA {