[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) { switch (target) {
case TextureUploadTarget::ProxyCubeMap: case TextureUploadTarget::ProxyCubeMap:
case TextureUploadTarget::ProxyTexture1DArray: case TextureUploadTarget::ProxyTexture1DArray:
case TextureUploadTarget::ProxyTexture2DArray:
case TextureUploadTarget::ProxyTexture1D:
case TextureUploadTarget::ProxyTexture2D: case TextureUploadTarget::ProxyTexture2D:
case TextureUploadTarget::ProxyTexture3D:
case TextureUploadTarget::ProxyTexture2DMultisample: case TextureUploadTarget::ProxyTexture2DMultisample:
case TextureUploadTarget::ProxyTexture2DMultisampleArray:
case TextureUploadTarget::ProxyTextureRectangle: case TextureUploadTarget::ProxyTextureRectangle:
case TextureUploadTarget::ProxyCubeMapArray:
return true; return true;
default: default:
return false; return false;
@@ -17,7 +17,7 @@ namespace MobileGL {
Unknown = -1 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 // it is used in TextureStorage
enum class TextureUploadTarget { enum class TextureUploadTarget {
Texture1D, Texture1D,
@@ -27,7 +27,9 @@ namespace MobileGL {
ProxyTexture2D, ProxyTexture2D,
ProxyTexture3D, ProxyTexture3D,
Texture1DArray, Texture1DArray,
Texture2DArray,
ProxyTexture1DArray, ProxyTexture1DArray,
ProxyTexture2DArray,
TextureRectangle, TextureRectangle,
ProxyTextureRectangle, ProxyTextureRectangle,
CubeMapPositiveX, CubeMapPositiveX,
@@ -37,8 +39,12 @@ namespace MobileGL {
CubeMapPositiveZ, CubeMapPositiveZ,
CubeMapNegativeZ, CubeMapNegativeZ,
ProxyCubeMap, ProxyCubeMap,
CubeMapArray,
ProxyCubeMapArray,
Texture2DMultisample, Texture2DMultisample,
Texture2DMultisampleArray,
ProxyTexture2DMultisample, ProxyTexture2DMultisample,
ProxyTexture2DMultisampleArray,
TextureUploadTargetCount, TextureUploadTargetCount,
Unknown = -1 Unknown = -1
}; };
@@ -182,4 +188,4 @@ namespace MobileGL {
SwizzleParamCount, SwizzleParamCount,
Unknown = -1 Unknown = -1
}; };
} } // namespace MobileGL
@@ -1,4 +1,5 @@
#include "TextureEnumConverter.h" #include "TextureEnumConverter.h"
#include "GL/glext.h"
#include "MG_Util/Converters/GLToStr/GLEnumConverter.h" #include "MG_Util/Converters/GLToStr/GLEnumConverter.h"
namespace MobileGL { namespace MobileGL {
@@ -290,6 +291,14 @@ namespace MobileGL {
return TextureUploadTarget::Texture1DArray; return TextureUploadTarget::Texture1DArray;
case GL_PROXY_TEXTURE_1D_ARRAY: case GL_PROXY_TEXTURE_1D_ARRAY:
return TextureUploadTarget::ProxyTexture1DArray; 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: case GL_TEXTURE_RECTANGLE:
return TextureUploadTarget::TextureRectangle; return TextureUploadTarget::TextureRectangle;
case GL_PROXY_TEXTURE_RECTANGLE: case GL_PROXY_TEXTURE_RECTANGLE:
@@ -312,6 +321,10 @@ namespace MobileGL {
return TextureUploadTarget::Texture2DMultisample; return TextureUploadTarget::Texture2DMultisample;
case GL_PROXY_TEXTURE_2D_MULTISAMPLE: case GL_PROXY_TEXTURE_2D_MULTISAMPLE:
return TextureUploadTarget::ProxyTexture2DMultisample; return TextureUploadTarget::ProxyTexture2DMultisample;
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
return TextureUploadTarget::Texture2DMultisampleArray;
case GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY:
return TextureUploadTarget::ProxyTexture2DMultisampleArray;
default: default:
return TextureUploadTarget::Unknown; return TextureUploadTarget::Unknown;
} }
@@ -306,22 +306,23 @@ namespace MobileGL {
return GL_TEXTURE_2D_MULTISAMPLE; return GL_TEXTURE_2D_MULTISAMPLE;
case TextureUploadTarget::ProxyTexture2DMultisample: case TextureUploadTarget::ProxyTexture2DMultisample:
return GL_PROXY_TEXTURE_2D_MULTISAMPLE; 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: default:
return GL_UNKNOWN_MGL; 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) { GLenum ConvertSamplerFilterModeToGLEnum(SamplerFilterMode filter, SamplerMipmapMode mipmap) {
switch (mipmap) { switch (mipmap) {
case SamplerMipmapMode::None: { case SamplerMipmapMode::None: {
@@ -20,10 +20,24 @@ namespace MobileGL {
case TextureUploadTarget::CubeMapPositiveZ: case TextureUploadTarget::CubeMapPositiveZ:
case TextureUploadTarget::CubeMapNegativeZ: case TextureUploadTarget::CubeMapNegativeZ:
case TextureUploadTarget::ProxyCubeMap: case TextureUploadTarget::ProxyCubeMap:
case TextureUploadTarget::CubeMapArray:
case TextureUploadTarget::ProxyCubeMapArray:
return TextureTarget::TextureCubeMap; return TextureTarget::TextureCubeMap;
case TextureUploadTarget::Texture2DMultisample: case TextureUploadTarget::Texture2DMultisample:
case TextureUploadTarget::ProxyTexture2DMultisample: case TextureUploadTarget::ProxyTexture2DMultisample:
return TextureTarget::Texture2DMultisample; 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: default:
return TextureTarget::Unknown; return TextureTarget::Unknown;
} }
@@ -296,6 +296,26 @@ namespace MobileGL {
return "Texture2DMultisample"; return "Texture2DMultisample";
case TextureUploadTarget::ProxyTexture2DMultisample: case TextureUploadTarget::ProxyTexture2DMultisample:
return "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: default:
return "Unknown"; return "Unknown";
} }