diff --git a/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp b/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp index d5f00ddb..92c2b1fd 100644 --- a/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp +++ b/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp @@ -185,32 +185,32 @@ namespace MobileGL { } case TextureInternalFormat::DepthComponent: { switch (type) { - case TexturePixelDataType::UnsignedShort: - return TextureInternalFormat::DepthComponent16; - case TexturePixelDataType::UnsignedInt: - return TextureInternalFormat::DepthComponent32; - case TexturePixelDataType::Float: - return TextureInternalFormat::DepthComponent32F; - default: - MGLOG_W("%s: Can't infer sized internal format from internalformat=%s, format=%s, type=%s, " - "returning original.", - __func__, MG_Util::ConvertTextureInternalFormatToString(internalformat).c_str(), - MG_Util::ConvertTextureInputFormatToString(format).c_str(), - MG_Util::ConvertTexturePixelDataTypeToString(type).c_str()); - return internalformat; + case TexturePixelDataType::UnsignedShort: + return TextureInternalFormat::DepthComponent16; + case TexturePixelDataType::UnsignedInt: + return TextureInternalFormat::DepthComponent32; + case TexturePixelDataType::Float: + return TextureInternalFormat::DepthComponent32F; + default: + MGLOG_W("%s: Can't infer sized internal format from internalformat=%s, format=%s, type=%s, " + "returning original.", + __func__, MG_Util::ConvertTextureInternalFormatToString(internalformat).c_str(), + MG_Util::ConvertTextureInputFormatToString(format).c_str(), + MG_Util::ConvertTexturePixelDataTypeToString(type).c_str()); + return internalformat; } } case TextureInternalFormat::DepthStencil: { switch (type) { - case TexturePixelDataType::UnsignedInt248: - return TextureInternalFormat::Depth24Stencil8; - default: - MGLOG_W("%s: Can't infer sized internal format from internalformat=%s, format=%s, type=%s, " - "returning original.", - __func__, MG_Util::ConvertTextureInternalFormatToString(internalformat).c_str(), - MG_Util::ConvertTextureInputFormatToString(format).c_str(), - MG_Util::ConvertTexturePixelDataTypeToString(type).c_str()); - return internalformat; + case TexturePixelDataType::UnsignedInt248: + return TextureInternalFormat::Depth24Stencil8; + default: + MGLOG_W("%s: Can't infer sized internal format from internalformat=%s, format=%s, type=%s, " + "returning original.", + __func__, MG_Util::ConvertTextureInternalFormatToString(internalformat).c_str(), + MG_Util::ConvertTextureInputFormatToString(format).c_str(), + MG_Util::ConvertTexturePixelDataTypeToString(type).c_str()); + return internalformat; } } default: { @@ -223,5 +223,93 @@ namespace MobileGL { } } } + + TextureInternalFormat ConvertInternalFormatToUnsized(TextureInternalFormat internalformat) { + switch (internalformat) { + case TextureInternalFormat::R8: + case TextureInternalFormat::R8Snorm: + case TextureInternalFormat::R16: + case TextureInternalFormat::R16Snorm: + case TextureInternalFormat::R16F: + case TextureInternalFormat::R32F: + case TextureInternalFormat::R8I: + case TextureInternalFormat::R8UI: + case TextureInternalFormat::R16I: + case TextureInternalFormat::R16UI: + case TextureInternalFormat::R32I: + case TextureInternalFormat::R32UI: + case TextureInternalFormat::Red: + return TextureInternalFormat::Red; + case TextureInternalFormat::RG8: + case TextureInternalFormat::RG8Snorm: + case TextureInternalFormat::RG16: + case TextureInternalFormat::RG16Snorm: + case TextureInternalFormat::RG16F: + case TextureInternalFormat::RG32F: + case TextureInternalFormat::RG8I: + case TextureInternalFormat::RG8UI: + case TextureInternalFormat::RG16I: + case TextureInternalFormat::RG16UI: + case TextureInternalFormat::RG32I: + case TextureInternalFormat::RG32UI: + case TextureInternalFormat::RG: + return TextureInternalFormat::RG; + case TextureInternalFormat::R3G3B2: + case TextureInternalFormat::RGB4: + case TextureInternalFormat::RGB5: + case TextureInternalFormat::RGB8: + case TextureInternalFormat::RGB8Snorm: + case TextureInternalFormat::RGB10: + case TextureInternalFormat::RGB12: + case TextureInternalFormat::RGB16Snorm: + case TextureInternalFormat::RGB16F: + case TextureInternalFormat::RGB32F: + case TextureInternalFormat::R11FG11FB10F: + case TextureInternalFormat::RGB9E5: + case TextureInternalFormat::SRGB8: + case TextureInternalFormat::RGB8I: + case TextureInternalFormat::RGB8UI: + case TextureInternalFormat::RGB16I: + case TextureInternalFormat::RGB16UI: + case TextureInternalFormat::RGB32I: + case TextureInternalFormat::RGB32UI: + case TextureInternalFormat::RGB: + return TextureInternalFormat::RGB; + case TextureInternalFormat::RGBA2: + case TextureInternalFormat::RGBA4: + case TextureInternalFormat::RGB5A1: + case TextureInternalFormat::RGBA8: + case TextureInternalFormat::RGBA8Snorm: + case TextureInternalFormat::RGB10A2: + case TextureInternalFormat::RGB10A2UI: + case TextureInternalFormat::RGBA12: + case TextureInternalFormat::RGBA16: + case TextureInternalFormat::SRGB8Alpha8: + case TextureInternalFormat::RGBA16F: + case TextureInternalFormat::RGBA32F: + case TextureInternalFormat::RGBA8I: + case TextureInternalFormat::RGBA8UI: + case TextureInternalFormat::RGBA16I: + case TextureInternalFormat::RGBA16UI: + case TextureInternalFormat::RGBA32I: + case TextureInternalFormat::RGBA32UI: + case TextureInternalFormat::RGBA: + return TextureInternalFormat::RGBA; + case TextureInternalFormat::DepthComponent16: + case TextureInternalFormat::DepthComponent24: + case TextureInternalFormat::DepthComponent32: + case TextureInternalFormat::DepthComponent32F: + case TextureInternalFormat::DepthComponent: + return TextureInternalFormat::DepthComponent; + case TextureInternalFormat::Depth24Stencil8: + case TextureInternalFormat::Depth32FStencil8: + case TextureInternalFormat::DepthStencil: + return TextureInternalFormat::DepthStencil; + default: + MGLOG_W("%s: Unknown or unhandled internal format %s, returning original.", __func__, + MG_Util::ConvertTextureInternalFormatToString(internalformat).c_str()); + return internalformat; + } + } } // namespace MG_Util } // namespace MobileGL \ No newline at end of file diff --git a/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.h b/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.h index e04bdf66..0cfbbe6f 100644 --- a/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.h +++ b/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.h @@ -15,5 +15,6 @@ namespace MobileGL { TextureTarget ConvertTextureUploadTargetToTextureTarget(TextureUploadTarget target); TextureInternalFormat ConvertInternalFormatToSized(TextureInternalFormat internalformat, TextureInputFormat format, TexturePixelDataType type); + TextureInternalFormat ConvertInternalFormatToUnsized(TextureInternalFormat internalformat); } // namespace MG_Util } // namespace MobileGL \ No newline at end of file