Browse Source

Ensure that pixel pack buffer is not bound when reading image to RAM.

GLnext can't be here soon enough.
pull/94/head
Vladimír Vondruš 11 years ago
parent
commit
cb1895536c
  1. 1
      src/Magnum/AbstractTexture.cpp
  2. 1
      src/Magnum/CubeMapTexture.cpp

1
src/Magnum/AbstractTexture.cpp

@ -1233,6 +1233,7 @@ template<UnsignedInt dimensions> void AbstractTexture::image(GLint level, Image<
const Math::Vector<dimensions, Int> size = DataHelper<dimensions>::imageSize(*this, level); const Math::Vector<dimensions, Int> size = DataHelper<dimensions>::imageSize(*this, level);
const std::size_t dataSize = image.dataSize(size); const std::size_t dataSize = image.dataSize(size);
char* data = new char[dataSize]; char* data = new char[dataSize];
Buffer::unbindInternal(Buffer::TargetHint::PixelPack);
(this->*Context::current()->state().texture->getImageImplementation)(level, image.format(), image.type(), dataSize, data); (this->*Context::current()->state().texture->getImageImplementation)(level, image.format(), image.type(), dataSize, data);
image.setData(image.format(), image.type(), size, data); image.setData(image.format(), image.type(), size, data);
} }

1
src/Magnum/CubeMapTexture.cpp

@ -60,6 +60,7 @@ void CubeMapTexture::image(const Coordinate coordinate, const Int level, Image2D
const Vector2i size = imageSize(level); const Vector2i size = imageSize(level);
const std::size_t dataSize = image.dataSize(size); const std::size_t dataSize = image.dataSize(size);
char* data = new char[dataSize]; char* data = new char[dataSize];
Buffer::unbindInternal(Buffer::TargetHint::PixelPack);
(this->*Context::current()->state().texture->getCubeImageImplementation)(coordinate, level, size, image.format(), image.type(), dataSize, data); (this->*Context::current()->state().texture->getCubeImageImplementation)(coordinate, level, size, image.format(), image.type(), dataSize, data);
image.setData(image.format(), image.type(), size, data); image.setData(image.format(), image.type(), size, data);
} }

Loading…
Cancel
Save