mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 06:08:30 +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());
|
GLenum target = MG_Util::ConvertTextureTargetToGLEnum(textureObject->GetTarget());
|
||||||
backendTextureIt->second->Bind(target);
|
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,
|
MG_External::GLES::glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0,
|
||||||
dstX1, dstY1, mask, filter);
|
dstX1, dstY1, mask, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const GLubyte* GetString(GLenum name) {
|
||||||
|
return MG_External::GLES::glGetString(name);
|
||||||
|
}
|
||||||
} // namespace MobileGL::MG_Backend::DirectGLES
|
} // namespace MobileGL::MG_Backend::DirectGLES
|
||||||
|
|||||||
@@ -16,4 +16,5 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
|||||||
GLsizei drawcount, const GLint* basevertex);
|
GLsizei drawcount, const GLint* basevertex);
|
||||||
void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
|
void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
|
||||||
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||||
|
const GLubyte* GetString(GLenum name);
|
||||||
} // namespace MobileGL::MG_Backend::DirectGLES
|
} // namespace MobileGL::MG_Backend::DirectGLES
|
||||||
@@ -5,7 +5,24 @@
|
|||||||
|
|
||||||
namespace MobileGL {
|
namespace MobileGL {
|
||||||
namespace MG_Config {
|
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 {
|
namespace MG_Backend {
|
||||||
@@ -50,25 +67,6 @@ namespace MobileGL {
|
|||||||
void Init() {
|
void Init() {
|
||||||
MGLOG_D("Initializing MobileGL Backend...");
|
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();
|
InitSpecificBackendLibs();
|
||||||
LogBackendInfo();
|
LogBackendInfo();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,18 @@
|
|||||||
#include <MG_Util/Converters/GLToStr/GLEnumConverter.h>
|
#include <MG_Util/Converters/GLToStr/GLEnumConverter.h>
|
||||||
#include <MG_Util/Converters/MGToGL/ErrorCodeConverter.h>
|
#include <MG_Util/Converters/MGToGL/ErrorCodeConverter.h>
|
||||||
#include <MG_Util/Converters/MGToStr/GLExtensionConverter.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 MobileGL {
|
||||||
namespace MG_Impl::GLImpl {
|
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@ */
|
/* @INSERTION_POINT:FUNCTION_IMPLEMENTATION@ */
|
||||||
const GLubyte* GetString(GLenum name) {
|
const GLubyte* GetString(GLenum name) {
|
||||||
static String vendorString;
|
static String vendorString;
|
||||||
@@ -39,9 +48,9 @@ namespace MobileGL {
|
|||||||
|
|
||||||
case GL_RENDERER: {
|
case GL_RENDERER: {
|
||||||
if (rendererString.empty()) {
|
if (rendererString.empty()) {
|
||||||
String deviceInfo;
|
const char* backendStr = (const char*)GetString_Backend(GL_RENDER);
|
||||||
rendererString = std::format("{} ({}) ({})", MG_Config::RendererInfoPtr->RendererName.c_str(),
|
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();
|
return (const GLubyte*)rendererString.c_str();
|
||||||
}
|
}
|
||||||
@@ -118,7 +127,9 @@ namespace MobileGL {
|
|||||||
case GL_MAX_TEXTURE_SIZE:
|
case GL_MAX_TEXTURE_SIZE:
|
||||||
params[0] = 1024 * 64; // TODO: get from backend
|
params[0] = 1024 * 64; // TODO: get from backend
|
||||||
break;
|
break;
|
||||||
|
case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:
|
||||||
|
params[0] = 1; // TODO: get from backend
|
||||||
|
break;
|
||||||
// State
|
// State
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user