diff --git a/kraken/KRTexture2D.h b/kraken/KRTexture2D.h index aa34ea2..c3d5ac6 100755 --- a/kraken/KRTexture2D.h +++ b/kraken/KRTexture2D.h @@ -47,6 +47,7 @@ public: virtual bool uploadTexture(GLenum target, int lod_max_dim, int ¤t_lod_max_dim, bool compress = false, bool premultiply_alpha = false) = 0; virtual void bind(GLuint texture_unit); + virtual Vector2i getDimensions() const = 0; protected: KRDataBlock *m_pData; diff --git a/kraken/KRTextureKTX.cpp b/kraken/KRTextureKTX.cpp index c600e64..389d94c 100755 --- a/kraken/KRTextureKTX.cpp +++ b/kraken/KRTextureKTX.cpp @@ -123,6 +123,11 @@ KRTextureKTX::~KRTextureKTX() { m_blocks.clear(); } +Vector2i KRTextureKTX::getDimensions() const +{ + return Vector2i::Create(Vector2i::Create(m_header.pixelWidth, m_header.pixelHeight)); +} + long KRTextureKTX::getMemRequiredForSize(int max_dim) { int target_dim = max_dim; diff --git a/kraken/KRTextureKTX.h b/kraken/KRTextureKTX.h index 032b7a2..da5bf1b 100755 --- a/kraken/KRTextureKTX.h +++ b/kraken/KRTextureKTX.h @@ -44,6 +44,7 @@ public: bool uploadTexture(GLenum target, int lod_max_dim, int ¤t_lod_max_dim, bool compress = false, bool premultiply_alpha = false); virtual long getMemRequiredForSize(int max_dim); + virtual Vector2i getDimensions() const override; protected: diff --git a/kraken/KRTexturePVR.cpp b/kraken/KRTexturePVR.cpp index 9bda884..7bfa054 100755 --- a/kraken/KRTexturePVR.cpp +++ b/kraken/KRTexturePVR.cpp @@ -144,6 +144,11 @@ KRTexturePVR::~KRTexturePVR() { m_blocks.clear(); } +Vector2i KRTexturePVR::getDimensions() const +{ + return Vector2i::Create(m_iWidth, m_iHeight); +} + long KRTexturePVR::getMemRequiredForSize(int max_dim) { int target_dim = max_dim; diff --git a/kraken/KRTexturePVR.h b/kraken/KRTexturePVR.h index 1da3dc7..190df86 100755 --- a/kraken/KRTexturePVR.h +++ b/kraken/KRTexturePVR.h @@ -43,6 +43,7 @@ public: bool uploadTexture(GLenum target, int lod_max_dim, int ¤t_lod_max_dim, bool compress = false, bool premultiply_alpha = false); virtual long getMemRequiredForSize(int max_dim); + virtual Vector2i getDimensions() const override; protected: diff --git a/kraken/KRTextureTGA.cpp b/kraken/KRTextureTGA.cpp index d39aac3..8802241 100755 --- a/kraken/KRTextureTGA.cpp +++ b/kraken/KRTextureTGA.cpp @@ -73,6 +73,8 @@ KRTextureTGA::KRTextureTGA(KRContext &context, KRDataBlock *data, std::string na data->lock(); TGA_HEADER *pHeader = (TGA_HEADER *)data->getStart(); + m_dimensions.x = pHeader->width; + m_dimensions.y = pHeader->height; m_max_lod_max_dim = pHeader->width > pHeader->height ? pHeader->width : pHeader->height; m_min_lod_max_dim = m_max_lod_max_dim; // Mipmaps not yet supported for TGA images switch(pHeader->imagetype) { @@ -415,6 +417,11 @@ long KRTextureTGA::getMemRequiredForSize(int max_dim) return m_imageSize; } +Vector2i KRTextureTGA::getDimensions() const +{ + return m_dimensions; +} + std::string KRTextureTGA::getExtension() { return "tga"; diff --git a/kraken/KRTextureTGA.h b/kraken/KRTextureTGA.h index 7585b6b..fdabab3 100755 --- a/kraken/KRTextureTGA.h +++ b/kraken/KRTextureTGA.h @@ -47,6 +47,8 @@ public: #endif virtual long getMemRequiredForSize(int max_dim); + virtual Vector2i getDimensions() const override; private: long m_imageSize; + Vector2i m_dimensions; };