mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-09 12:48:32 +09:00
[Feat] (MG_Backend/DirectGLES, GL_Impl/Getter): hardcode getter, sync some sampler parameters
This commit is contained in:
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user