From f3269a49c474ffe4d382c3d60826ad1cfbb7cdc4 Mon Sep 17 00:00:00 2001 From: rtk0c Date: Fri, 25 Nov 2022 17:28:07 -0800 Subject: Changeset: 93 Branch comment: [] Port font and UTF-8 string utilities from p6503 --- source/30-game/Texture.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'source/30-game/Texture.cpp') diff --git a/source/30-game/Texture.cpp b/source/30-game/Texture.cpp index 6fa7c8a..e5c9705 100644 --- a/source/30-game/Texture.cpp +++ b/source/30-game/Texture.cpp @@ -14,7 +14,8 @@ Texture::~Texture() { glDeleteTextures(1, &mHandle); } -static GLenum MapTextureFilteringToGL(Tags::TexFilter option) { +namespace ProjectBrussel_UNITY_ID { +GLint MapTextureFilteringToGL(Tags::TexFilter option) { using namespace Tags; switch (option) { case TF_Linear: return GL_LINEAR; @@ -22,8 +23,11 @@ static GLenum MapTextureFilteringToGL(Tags::TexFilter option) { } return 0; } +} // namespace ProjectBrussel_UNITY_ID + +Texture::ErrorCode Texture::InitFromFile(const char* filePath, const TextureProperties& props) { + using namespace ProjectBrussel_UNITY_ID; -Texture::ErrorCode Texture::InitFromFile(const char* filePath) { if (IsValid()) { return EC_AlreadyInitialized; } @@ -40,21 +44,23 @@ Texture::ErrorCode Texture::InitFromFile(const char* filePath) { glGenTextures(1, &mHandle); glBindTexture(GL_TEXTURE_2D, mHandle); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MapTextureFilteringToGL(props.minifyingFilter)); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MapTextureFilteringToGL(props.magnifyingFilter)); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, result); - mInfo.size = { width, height }; + mProps.size = { width, height }; return EC_Success; } -Texture::ErrorCode Texture::InitFromImage(const Image& image) { +Texture::ErrorCode Texture::InitFromImage(const Image& image, const TextureProperties& props) { + using namespace ProjectBrussel_UNITY_ID; + if (IsValid()) { return EC_AlreadyInitialized; } - GLenum sourceFormat; + GLint sourceFormat; switch (image.GetChannels()) { case 1: sourceFormat = GL_RED; break; case 2: sourceFormat = GL_RG; break; @@ -69,11 +75,13 @@ Texture::ErrorCode Texture::InitFromImage(const Image& image) { glGenTextures(1, &mHandle); glBindTexture(GL_TEXTURE_2D, mHandle); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MapTextureFilteringToGL(props.minifyingFilter)); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MapTextureFilteringToGL(props.magnifyingFilter)); glTexImage2D(GL_TEXTURE_2D, 0, sourceFormat, size.x, size.y, 0, sourceFormat, GL_UNSIGNED_BYTE, dataPtr); - mInfo.size = size; + // Copy all [In] properties + mProps = props; + mProps.size = size; return EC_Success; } @@ -192,7 +200,7 @@ Texture::ErrorCode Texture::InitAtlas(const AtlasInput& in, AtlasOutput* out) { // 5. Generate atlas texture info mHandle = atlasTexture; - mInfo.size = { atlasWidth, atlasHeight }; + mProps.size = { atlasWidth, atlasHeight }; // 6. Generate output information if (out) { @@ -216,8 +224,8 @@ Texture::ErrorCode Texture::InitAtlas(const AtlasInput& in, AtlasOutput* out) { return EC_Success; } -const TextureInfo& Texture::GetInfo() const { - return mInfo; +const TextureProperties& Texture::GetInfo() const { + return mProps; } GLuint Texture::GetHandle() const { -- cgit v1.2.3-70-g09d2