[Feat] (MG_Backend/DirectGLES, GL_Impl/Getter): hardcode getter, sync some sampler parameters

This commit is contained in:
2025-10-29 16:39:03 +08:00
parent 683d8b35bf
commit b82c481605
4 changed files with 45 additions and 23 deletions
@@ -297,6 +297,14 @@ namespace MobileGL::MG_Backend::DirectGLES {
GLenum target = MG_Util::ConvertTextureTargetToGLEnum(textureObject->GetTarget());
backendTextureIt->second->Bind(target);
const auto& samplerObj = textureObject->GetSamplerObject();
const auto minfilter = samplerObj->GetMinFilter();
MG_External::GLES::glTexParameteri(target, GL_TEXTURE_MIN_FILTER, MG_Util::ConvertSamplerFilterModeToGLEnum(minfilter));
const auto magfilter = samplerObj->GetMagFilter();
MG_External::GLES::glTexParameteri(target, GL_TEXTURE_MAG_FILTER, MG_Util::ConvertSamplerFilterModeToGLEnum(magfilter));
MG_External::GLES::glTexParameterf(target, GL_TEXTURE_MIN_LOD, samplerObj->GetMinLod());
MG_External::GLES::glTexParameterf(target, GL_TEXTURE_MAX_LOD, samplerObj->GetMaxLod());
}
}
@@ -387,4 +395,8 @@ namespace MobileGL::MG_Backend::DirectGLES {
MG_External::GLES::glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0,
dstX1, dstY1, mask, filter);
}
const GLubyte* GetString(GLenum name) {
return MG_External::GLES::glGetString(name);
}
} // namespace MobileGL::MG_Backend::DirectGLES
@@ -16,4 +16,5 @@ namespace MobileGL::MG_Backend::DirectGLES {
GLsizei drawcount, const GLint* basevertex);
void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
const GLubyte* GetString(GLenum name);
} // namespace MobileGL::MG_Backend::DirectGLES
+18 -20
View File
@@ -5,7 +5,24 @@
namespace MobileGL {
namespace MG_Config {
RendererInfo* RendererInfoPtr = nullptr;
// TODO: tidy this mess up
RendererInfo* RendererInfoPtr =
#if MOBILEGL_BACKEND == MOBILEGL_BACKEND_DILIGENT
switch (MG_Config::Backend::Diligent::SpecificBackend) {
case MG_Backend::Diligent::SpecificBackendType::Vulkan:
MG_Config::RendererInfoPtr = &MG_Backend::Diligent::RendererInfoVulkan;
break;
case MG_Backend::Diligent::SpecificBackendType::Metal:
MG_Config::RendererInfoPtr = &MG_Backend::Diligent::RendererInfoMetal;
break;
default:
throw RuntimeError("Unsupported renderer type");
}
#elif MOBILEGL_BACKEND == MOBILEGL_BACKEND_TYPE_DIRECT_GLES
&MG_Backend::DirectGLES::RendererInfo;
#else
MG_Config::RendererInfoPtr = &RendererInfoUnknown;
#endif
}
namespace MG_Backend {
@@ -50,25 +67,6 @@ namespace MobileGL {
void Init() {
MGLOG_D("Initializing MobileGL Backend...");
#if MOBILEGL_BACKEND == MOBILEGL_BACKEND_DILIGENT
switch (MG_Config::Backend::Diligent::SpecificBackend) {
case MG_Backend::Diligent::SpecificBackendType::Vulkan:
RendererInfo = MG_Backend::Diligent::RendererInfoVulkan;
break;
case MG_Backend::Diligent::SpecificBackendType::Metal:
RendererInfo = MG_Backend::Diligent::RendererInfoMetal;
break;
default:
throw RuntimeError("Unsupported renderer type");
}
#elif MOBILEGL_BACKEND == MOBILEGL_BACKEND_TYPE_DIRECT_GLES
RendererInfo = MG_Backend::DirectGLES::RendererInfo;
#else
RendererInfo = RendererInfoUnknown;
#endif
MG_Config::RendererInfoPtr = &RendererInfo;
InitSpecificBackendLibs();
LogBackendInfo();
}
+14 -3
View File
@@ -4,9 +4,18 @@
#include <MG_Util/Converters/GLToStr/GLEnumConverter.h>
#include <MG_Util/Converters/MGToGL/ErrorCodeConverter.h>
#include <MG_Util/Converters/MGToStr/GLExtensionConverter.h>
#if MOBILEGL_BACKEND == MOBILEGL_BACKEND_TYPE_DIRECT_GLES
#include <MG_Backend/DirectGLES/DirectGLES.h>
#endif
namespace MobileGL {
namespace MG_Impl::GLImpl {
const GLubyte* GetString_Backend(GLenum name) {
#if MOBILEGL_BACKEND == MOBILEGL_BACKEND_TYPE_DIRECT_GLES
return MG_Backend::DirectGLES::GetString(name);
#endif
}
/* @INSERTION_POINT:FUNCTION_IMPLEMENTATION@ */
const GLubyte* GetString(GLenum name) {
static String vendorString;
@@ -39,9 +48,9 @@ namespace MobileGL {
case GL_RENDERER: {
if (rendererString.empty()) {
String deviceInfo;
const char* backendStr = (const char*)GetString_Backend(GL_RENDER);
rendererString = std::format("{} ({}) ({})", MG_Config::RendererInfoPtr->RendererName.c_str(),
MG_Config::CoreName.c_str(), deviceInfo);
MG_Config::CoreName.c_str(), backendStr ? backendStr : "<unknown GPU>");
}
return (const GLubyte*)rendererString.c_str();
}
@@ -118,7 +127,9 @@ namespace MobileGL {
case GL_MAX_TEXTURE_SIZE:
params[0] = 1024 * 64; // TODO: get from backend
break;
case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:
params[0] = 1; // TODO: get from backend
break;
// State
// TODO