From f3761b601dd5814932c3500d2ee74aaa0af7cea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 28 Dec 2013 18:46:10 +0100 Subject: [PATCH] Added BufferImage&& overloads to *Texture*::set*Image() functions. The point is that we accept everything except const BufferImage&, as the buffer needs to be bound, which is not an constant operation, as it modifies internal GL state tracker. --- src/CubeMapTexture.h | 11 +++++++++++ src/CubeMapTextureArray.h | 10 ++++++++++ src/Texture.h | 10 ++++++++++ 3 files changed, 31 insertions(+) diff --git a/src/CubeMapTexture.h b/src/CubeMapTexture.h index 2281d7d69..80eb4f3b3 100644 --- a/src/CubeMapTexture.h +++ b/src/CubeMapTexture.h @@ -182,6 +182,11 @@ class CubeMapTexture: public AbstractTexture { DataHelper<2>::setImage(this, GLenum(coordinate), level, internalFormat, image); return *this; } + + /** @overload */ + CubeMapTexture& setImage(Coordinate coordinate, Int level, TextureFormat internalFormat, BufferImage2D&& image) { + return setImage(coordinate, level, internalFormat, image); + } #endif /** @@ -206,6 +211,12 @@ class CubeMapTexture: public AbstractTexture { DataHelper<2>::setSubImage(this, GLenum(coordinate), level, offset, image); return *this; } + + /** @overload */ + CubeMapTexture& setSubImage(Coordinate coordinate, Int level, const Vector2i& offset, BufferImage2D&& image) { + DataHelper<2>::setSubImage(this, GLenum(coordinate), level, offset, image); + return *this; + } #endif /** diff --git a/src/CubeMapTextureArray.h b/src/CubeMapTextureArray.h index 34eef8203..f4d54877a 100644 --- a/src/CubeMapTextureArray.h +++ b/src/CubeMapTextureArray.h @@ -185,6 +185,11 @@ class CubeMapTextureArray: public AbstractTexture { return *this; } + /** @overload */ + CubeMapTextureArray& setImage(Int level, TextureFormat internalFormat, BufferImage3D&& image) { + return setImage(level, internalFormat, image); + } + /** * @brief Set texture image 3D subdata * @param level Mip level @@ -209,6 +214,11 @@ class CubeMapTextureArray: public AbstractTexture { return *this; } + /** @overload */ + CubeMapTextureArray& setSubImage(Int level, const Vector3i& offset, BufferImage3D&& image) { + return setSubImage(level, offset, image); + } + /** * @brief Invalidate texture subimage * @param level Mip level diff --git a/src/Texture.h b/src/Texture.h index 85254346a..ad63a0b07 100644 --- a/src/Texture.h +++ b/src/Texture.h @@ -376,6 +376,11 @@ template class Texture: public AbstractTexture { DataHelper::setImage(this, _target, level, internalFormat, image); return *this; } + + /** @overload */ + Texture& setImage(Int level, TextureFormat internalFormat, BufferImage&& image) { + return setImage(level, internalFormat, image); + } #endif /** @@ -406,6 +411,11 @@ template class Texture: public AbstractTexture { DataHelper::setSubImage(this, _target, level, offset, image); return *this; } + + /** @overload */ + Texture& setSubImage(Int level, const typename DimensionTraits::VectorType& offset, BufferImage&& image) { + return setSubImage(level, offset, image); + } #endif /**