mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-13 06:38:31 +09:00
[Feat] (MG_State/RenderState, MG_Backend/DirectVulkan): make Distant
Horizon work - Implement BlendEquation/CullFaceMode/PointSize/PolygonMode - Implement GetFramebufferAttachmentParameter* - Downgrade some color attachment resolve failure - Downgrade some overly-strict shader stage linkage check (don't check on unused input var)
This commit is contained in:
@@ -160,31 +160,39 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
case GL_BLEND_DST_ALPHA: {
|
||||
BlendFactor srcRGB, dstRGB, srcAlpha, dstAlpha;
|
||||
MG_State::pGLContext->GetBlendFunc(srcRGB, dstRGB, srcAlpha, dstAlpha);
|
||||
*params = static_cast<GLint>(dstAlpha);
|
||||
*params = static_cast<GLint>(MG_Util::ConvertBlendFactorToGLEnum(dstAlpha));
|
||||
break;
|
||||
}
|
||||
case GL_BLEND_DST_RGB: {
|
||||
BlendFactor srcRGB, dstRGB, srcAlpha, dstAlpha;
|
||||
MG_State::pGLContext->GetBlendFunc(srcRGB, dstRGB, srcAlpha, dstAlpha);
|
||||
*params = static_cast<GLint>(dstRGB);
|
||||
*params = static_cast<GLint>(MG_Util::ConvertBlendFactorToGLEnum(dstRGB));
|
||||
break;
|
||||
}
|
||||
case GL_BLEND_EQUATION_RGB:
|
||||
*params = 0; // TODO
|
||||
case GL_BLEND_EQUATION_RGB: {
|
||||
BlendEquation colorEquation = BlendEquation::Add;
|
||||
BlendEquation alphaEquation = BlendEquation::Add;
|
||||
MG_State::pGLContext->GetBlendEquation(colorEquation, alphaEquation);
|
||||
*params = static_cast<GLint>(MG_Util::ConvertBlendEquationToGLEnum(colorEquation));
|
||||
break;
|
||||
case GL_BLEND_EQUATION_ALPHA:
|
||||
*params = 0; // TODO
|
||||
}
|
||||
case GL_BLEND_EQUATION_ALPHA: {
|
||||
BlendEquation colorEquation = BlendEquation::Add;
|
||||
BlendEquation alphaEquation = BlendEquation::Add;
|
||||
MG_State::pGLContext->GetBlendEquation(colorEquation, alphaEquation);
|
||||
*params = static_cast<GLint>(MG_Util::ConvertBlendEquationToGLEnum(alphaEquation));
|
||||
break;
|
||||
}
|
||||
case GL_BLEND_SRC_ALPHA: {
|
||||
BlendFactor srcRGB, dstRGB, srcAlpha, dstAlpha;
|
||||
MG_State::pGLContext->GetBlendFunc(srcRGB, dstRGB, srcAlpha, dstAlpha);
|
||||
*params = static_cast<GLint>(srcAlpha);
|
||||
*params = static_cast<GLint>(MG_Util::ConvertBlendFactorToGLEnum(srcAlpha));
|
||||
break;
|
||||
}
|
||||
case GL_BLEND_SRC_RGB: {
|
||||
BlendFactor srcRGB, dstRGB, srcAlpha, dstAlpha;
|
||||
MG_State::pGLContext->GetBlendFunc(srcRGB, dstRGB, srcAlpha, dstAlpha);
|
||||
*params = static_cast<GLint>(srcRGB);
|
||||
*params = static_cast<GLint>(MG_Util::ConvertBlendFactorToGLEnum(srcRGB));
|
||||
break;
|
||||
}
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
@@ -252,6 +260,9 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
case GL_CULL_FACE:
|
||||
*params = MG_State::pGLContext->IsCapabilityEnabled(CapabilityInput::CullFace) ? GL_TRUE : GL_FALSE;
|
||||
break;
|
||||
case GL_CULL_FACE_MODE:
|
||||
*params = static_cast<GLint>(MG_Util::ConvertCullFaceModeToGLEnum(MG_State::pGLContext->GetCullFaceMode()));
|
||||
break;
|
||||
case GL_CURRENT_PROGRAM: {
|
||||
const auto& currentProgram = MG_State::pGLContext->GetCurrentProgram();
|
||||
*params = currentProgram ? (GLint)currentProgram->GetExternalIndex() : 0;
|
||||
@@ -592,6 +603,10 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
case GL_POINT_SIZE:
|
||||
*params = 0; // TODO
|
||||
break;
|
||||
case GL_POLYGON_MODE:
|
||||
params[0] = GL_FILL;
|
||||
params[1] = GL_FILL;
|
||||
break;
|
||||
case GL_POINT_SIZE_GRANULARITY:
|
||||
*params = 0; // TODO
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user