[Feat] (MG_State/TextureState): Add more TextureUploadTarget.

This commit is contained in:
BZLZHH
2025-11-28 21:37:47 +08:00
parent 657c672899
commit e72bdb67b5
6 changed files with 72 additions and 13 deletions
@@ -10,9 +10,14 @@ namespace MobileGL::MG_Impl::GLImpl {
switch (target) {
case TextureUploadTarget::ProxyCubeMap:
case TextureUploadTarget::ProxyTexture1DArray:
case TextureUploadTarget::ProxyTexture2DArray:
case TextureUploadTarget::ProxyTexture1D:
case TextureUploadTarget::ProxyTexture2D:
case TextureUploadTarget::ProxyTexture3D:
case TextureUploadTarget::ProxyTexture2DMultisample:
case TextureUploadTarget::ProxyTexture2DMultisampleArray:
case TextureUploadTarget::ProxyTextureRectangle:
case TextureUploadTarget::ProxyCubeMapArray:
return true;
default:
return false;
@@ -17,7 +17,7 @@ namespace MobileGL {
Unknown = -1
};
// Don't tinker with order in this enum
// Don't tinker with order in this enum (especially CubeMap faces),
// it is used in TextureStorage
enum class TextureUploadTarget {
Texture1D,
@@ -27,7 +27,9 @@ namespace MobileGL {
ProxyTexture2D,
ProxyTexture3D,
Texture1DArray,
Texture2DArray,
ProxyTexture1DArray,
ProxyTexture2DArray,
TextureRectangle,
ProxyTextureRectangle,
CubeMapPositiveX,
@@ -37,8 +39,12 @@ namespace MobileGL {
CubeMapPositiveZ,
CubeMapNegativeZ,
ProxyCubeMap,
CubeMapArray,
ProxyCubeMapArray,
Texture2DMultisample,
Texture2DMultisampleArray,
ProxyTexture2DMultisample,
ProxyTexture2DMultisampleArray,
TextureUploadTargetCount,
Unknown = -1
};
@@ -182,4 +188,4 @@ namespace MobileGL {
SwizzleParamCount,
Unknown = -1
};
}
} // namespace MobileGL
@@ -1,4 +1,5 @@
#include "TextureEnumConverter.h"
#include "GL/glext.h"
#include "MG_Util/Converters/GLToStr/GLEnumConverter.h"
namespace MobileGL {
@@ -290,6 +291,14 @@ namespace MobileGL {
return TextureUploadTarget::Texture1DArray;
case GL_PROXY_TEXTURE_1D_ARRAY:
return TextureUploadTarget::ProxyTexture1DArray;
case GL_TEXTURE_2D_ARRAY:
return TextureUploadTarget::Texture2DArray;
case GL_TEXTURE_CUBE_MAP_ARRAY:
return TextureUploadTarget::CubeMapArray;
case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY:
return TextureUploadTarget::ProxyCubeMapArray;
case GL_PROXY_TEXTURE_2D_ARRAY:
return TextureUploadTarget::ProxyTexture2DArray;
case GL_TEXTURE_RECTANGLE:
return TextureUploadTarget::TextureRectangle;
case GL_PROXY_TEXTURE_RECTANGLE:
@@ -312,6 +321,10 @@ namespace MobileGL {
return TextureUploadTarget::Texture2DMultisample;
case GL_PROXY_TEXTURE_2D_MULTISAMPLE:
return TextureUploadTarget::ProxyTexture2DMultisample;
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
return TextureUploadTarget::Texture2DMultisampleArray;
case GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY:
return TextureUploadTarget::ProxyTexture2DMultisampleArray;
default:
return TextureUploadTarget::Unknown;
}
@@ -306,22 +306,23 @@ namespace MobileGL {
return GL_TEXTURE_2D_MULTISAMPLE;
case TextureUploadTarget::ProxyTexture2DMultisample:
return GL_PROXY_TEXTURE_2D_MULTISAMPLE;
case TextureUploadTarget::CubeMapArray:
return GL_TEXTURE_CUBE_MAP_ARRAY;
case TextureUploadTarget::ProxyCubeMapArray:
return GL_PROXY_TEXTURE_CUBE_MAP_ARRAY;
case TextureUploadTarget::Texture2DArray:
return GL_TEXTURE_2D_ARRAY;
case TextureUploadTarget::ProxyTexture2DArray:
return GL_PROXY_TEXTURE_2D_ARRAY;
case TextureUploadTarget::Texture2DMultisampleArray:
return GL_TEXTURE_2D_MULTISAMPLE_ARRAY;
case TextureUploadTarget::ProxyTexture2DMultisampleArray:
return GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY;
default:
return GL_UNKNOWN_MGL;
}
}
// GLenum ConvertSamplerFilterModeToGLEnum(SamplerFilterMode v) {
// switch (v) {
// case SamplerFilterMode::Nearest:
// return GL_NEAREST;
// case SamplerFilterMode::Linear:
// return GL_LINEAR;
// default:
// return GL_UNKNOWN_MGL;
// }
// }
GLenum ConvertSamplerFilterModeToGLEnum(SamplerFilterMode filter, SamplerMipmapMode mipmap) {
switch (mipmap) {
case SamplerMipmapMode::None: {
@@ -20,10 +20,24 @@ namespace MobileGL {
case TextureUploadTarget::CubeMapPositiveZ:
case TextureUploadTarget::CubeMapNegativeZ:
case TextureUploadTarget::ProxyCubeMap:
case TextureUploadTarget::CubeMapArray:
case TextureUploadTarget::ProxyCubeMapArray:
return TextureTarget::TextureCubeMap;
case TextureUploadTarget::Texture2DMultisample:
case TextureUploadTarget::ProxyTexture2DMultisample:
return TextureTarget::Texture2DMultisample;
case TextureUploadTarget::Texture2DMultisampleArray:
case TextureUploadTarget::ProxyTexture2DMultisampleArray:
return TextureTarget::Texture2DMultisampleArray;
case TextureUploadTarget::Texture3D:
case TextureUploadTarget::ProxyTexture3D:
return TextureTarget::Texture3D;
case TextureUploadTarget::Texture1D:
case TextureUploadTarget::ProxyTexture1D:
return TextureTarget::Texture1D;
case TextureUploadTarget::Texture2DArray:
case TextureUploadTarget::ProxyTexture2DArray:
return TextureTarget::Texture2DArray;
default:
return TextureTarget::Unknown;
}
@@ -296,6 +296,26 @@ namespace MobileGL {
return "Texture2DMultisample";
case TextureUploadTarget::ProxyTexture2DMultisample:
return "ProxyTexture2DMultisample";
case TextureUploadTarget::CubeMapArray:
return "CubeMapArray";
case TextureUploadTarget::ProxyCubeMapArray:
return "ProxyCubeMapArray";
case TextureUploadTarget::Texture3D:
return "Texture3D";
case TextureUploadTarget::ProxyTexture3D:
return "ProxyTexture3D";
case TextureUploadTarget::Texture1D:
return "Texture1D";
case TextureUploadTarget::ProxyTexture1D:
return "ProxyTexture1D";
case TextureUploadTarget::Texture2DArray:
return "Texture2DArray";
case TextureUploadTarget::ProxyTexture2DArray:
return "ProxyTexture2DArray";
case TextureUploadTarget::Texture2DMultisampleArray:
return "Texture2DMultisampleArray";
case TextureUploadTarget::ProxyTexture2DMultisampleArray:
return "ProxyTexture2DMultisampleArray";
default:
return "Unknown";
}