From 965f78122f94a69a06d7452458dbc8db51efbdf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 16 Oct 2023 19:33:17 +0200 Subject: [PATCH] TextureTools: properly set framebuffer viewport in DistanceField. --- src/Magnum/TextureTools/DistanceField.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Magnum/TextureTools/DistanceField.cpp b/src/Magnum/TextureTools/DistanceField.cpp index 8b342dafa..c533e91db 100644 --- a/src/Magnum/TextureTools/DistanceField.cpp +++ b/src/Magnum/TextureTools/DistanceField.cpp @@ -200,7 +200,11 @@ void DistanceField::operator()(GL::Texture2D& input, GL::Framebuffer& output, co (imageSize/rectangle.size()) % 2 == Vector2i{0}, "TextureTools::DistanceField: expected input and output size ratio to be a multiple of 2, got" << Debug::packed << imageSize << "and" << Debug::packed << rectangle.size(), ); + /* Save existing viewport to restore it back after */ + const Range2Di previousViewport = output.viewport(); + output + .setViewport(rectangle) .clear(GL::FramebufferClear::Color) .bind(); @@ -208,6 +212,9 @@ void DistanceField::operator()(GL::Texture2D& input, GL::Framebuffer& output, co .bindTexture(input) .setImageSizeInverted(1.0f/Vector2(imageSize)) .draw(_state->mesh); + + /* Restore the previous viewport */ + output.setViewport(previousViewport); } void DistanceField::operator()(GL::Texture2D& input, GL::Texture2D& output, const Range2Di& rectangle, const Vector2i&