From 165b8fa65efb15b2929278687720ca53683e6616 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 11 Dec 2022 12:41:54 +0000 Subject: Support saving textures with different output types --- gfx/models/texture.cpp | 8 ++++---- gfx/models/texture.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gfx/models/texture.cpp b/gfx/models/texture.cpp index 6019bec..4718708 100644 --- a/gfx/models/texture.cpp +++ b/gfx/models/texture.cpp @@ -43,7 +43,7 @@ Texture::bind(GLenum unit) const } void -Texture::save(const glTexture & texture, GLenum format, const glm::ivec2 & size, unsigned short channels, +Texture::save(const glTexture & texture, GLenum format, GLenum type, const glm::ivec2 & size, unsigned short channels, const char * path, short tgaFormat) { using TGAHead = std::array; @@ -56,18 +56,18 @@ Texture::save(const glTexture & texture, GLenum format, const glm::ivec2 & size, auto tga = out.mmap(fileSize, 0, PROT_WRITE, MAP_SHARED); *tga.get() = {0, tgaFormat, 0, 0, 0, 0, static_cast(size.x), static_cast(size.y), static_cast(8 * channels)}; - glGetTextureImage(texture, 0, format, GL_UNSIGNED_BYTE, static_cast(dataSize), tga.get() + 1); + glGetTextureImage(texture, 0, format, type, static_cast(dataSize), tga.get() + 1); tga.msync(MS_ASYNC); } void Texture::save(const glTexture & texture, const glm::ivec2 & size, const char * path) { - save(texture, GL_BGR, size, 3, path, 2); + save(texture, GL_BGR, GL_UNSIGNED_BYTE, size, 3, path, 2); } void Texture::saveDepth(const glTexture & texture, const glm::ivec2 & size, const char * path) { - save(texture, GL_DEPTH_COMPONENT, size, 1, path, 3); + save(texture, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, size, 1, path, 3); } diff --git a/gfx/models/texture.h b/gfx/models/texture.h index de532a5..3974d7f 100644 --- a/gfx/models/texture.h +++ b/gfx/models/texture.h @@ -22,8 +22,8 @@ public: static void saveDepth(const glTexture &, const glm::ivec2 & size, const char * path); private: - static void save(const glTexture &, GLenum, const glm::ivec2 & size, unsigned short channels, const char * path, - short tgaFormat); + static void save(const glTexture &, GLenum, GLenum, const glm::ivec2 & size, unsigned short channels, + const char * path, short tgaFormat); glTexture m_texture; }; -- cgit v1.2.3