diff --git a/src/Magnum/Framebuffer.cpp b/src/Magnum/Framebuffer.cpp index e082ad184..35b7188e0 100644 --- a/src/Magnum/Framebuffer.cpp +++ b/src/Magnum/Framebuffer.cpp @@ -28,6 +28,7 @@ #include #include "Magnum/Context.h" +#include "Magnum/DefaultFramebuffer.h" #include "Magnum/Extensions.h" #include "Magnum/Image.h" #include "Magnum/Renderbuffer.h" @@ -92,7 +93,17 @@ Framebuffer::~Framebuffer() { /* If bound, remove itself from state */ Implementation::FramebufferState* state = Context::current()->state().framebuffer; if(state->readBinding == _id) state->readBinding = 0; - if(state->drawBinding == _id) state->drawBinding = 0; + + /* For draw binding reset also viewport */ + if(state->drawBinding == _id) { + state->drawBinding = 0; + + /** + * @todo Less ugly solution (need to call setViewportInternal() to + * reset the viewport to size of default framebuffer) + */ + defaultFramebuffer.bind(FramebufferTarget::Draw); + } glDeleteFramebuffers(1, &_id); } diff --git a/src/Magnum/MeshTools/Compile.cpp b/src/Magnum/MeshTools/Compile.cpp index b7243cf79..4f0c979d4 100644 --- a/src/Magnum/MeshTools/Compile.cpp +++ b/src/Magnum/MeshTools/Compile.cpp @@ -83,7 +83,7 @@ std::tuple, std::unique_ptr> compile(const std::tie(indexData, indexType, indexStart, indexEnd) = MeshTools::compressIndices(meshData.indices()); indexBuffer.reset(new Buffer{Buffer::Target::ElementArray}); - indexBuffer->setData(data, usage); + indexBuffer->setData(indexData, usage); mesh.setCount(meshData.indices().size()) .setIndexBuffer(*indexBuffer, 0, indexType, indexStart, indexEnd); @@ -155,12 +155,12 @@ std::tuple, std::unique_ptr> compile(const std::tie(indexData, indexType, indexStart, indexEnd) = MeshTools::compressIndices(meshData.indices()); indexBuffer.reset(new Buffer{Buffer::Target::ElementArray}); - indexBuffer->setData(data, usage); + indexBuffer->setData(indexData, usage); mesh.setCount(meshData.indices().size()) .setIndexBuffer(*indexBuffer, 0, indexType, indexStart, indexEnd); /* Else set vertex count */ - } mesh.setCount(meshData.positions(0).size()); + } else mesh.setCount(meshData.positions(0).size()); return std::make_tuple(std::move(mesh), std::move(vertexBuffer), std::move(indexBuffer)); } diff --git a/src/Magnum/TextureTools/DistanceFieldShader.frag b/src/Magnum/TextureTools/DistanceFieldShader.frag index e74560091..b82c6d94b 100644 --- a/src/Magnum/TextureTools/DistanceFieldShader.frag +++ b/src/Magnum/TextureTools/DistanceFieldShader.frag @@ -64,7 +64,7 @@ out lowp float value; #ifdef TEXELFETCH_USABLE mediump ivec2 rotate(const mediump ivec2 vec) { - return mediump ivec2(-vec.y, vec.x); + return ivec2(-vec.y, vec.x); } bool hasValue(const mediump ivec2 position, const mediump ivec2 offset) { @@ -72,7 +72,7 @@ bool hasValue(const mediump ivec2 position, const mediump ivec2 offset) { } #else mediump vec2 rotate(const mediump vec2 vec) { - return mediump vec2(-vec.y, vec.x); + return vec2(-vec.y, vec.x); } bool hasValue(const mediump vec2 position, const mediump vec2 offset) {