[Feat] (MG_Util/Converters): Implement converters related to RenderState enum.

This commit is contained in:
BZLZHH
2025-10-03 12:45:52 +08:00
parent 30d4964a5e
commit f7df90447b
8 changed files with 725 additions and 105 deletions
@@ -0,0 +1,193 @@
#include "RenderStateEnumConverter.h"
namespace MobileGL {
namespace MG_Util {
GLenum ConvertBlendFactorToGLEnum(BlendFactor v) {
switch (v) {
case BlendFactor::Zero:
return GL_ZERO;
case BlendFactor::One:
return GL_ONE;
case BlendFactor::SrcColor:
return GL_SRC_COLOR;
case BlendFactor::OneMinusSrcColor:
return GL_ONE_MINUS_SRC_COLOR;
case BlendFactor::DstColor:
return GL_DST_COLOR;
case BlendFactor::OneMinusDstColor:
return GL_ONE_MINUS_DST_COLOR;
case BlendFactor::SrcAlpha:
return GL_SRC_ALPHA;
case BlendFactor::OneMinusSrcAlpha:
return GL_ONE_MINUS_SRC_ALPHA;
case BlendFactor::DstAlpha:
return GL_DST_ALPHA;
case BlendFactor::OneMinusDstAlpha:
return GL_ONE_MINUS_DST_ALPHA;
case BlendFactor::ConstantColor:
return GL_CONSTANT_COLOR;
case BlendFactor::OneMinusConstantColor:
return GL_ONE_MINUS_CONSTANT_COLOR;
case BlendFactor::ConstantAlpha:
return GL_CONSTANT_ALPHA;
case BlendFactor::OneMinusConstantAlpha:
return GL_ONE_MINUS_CONSTANT_ALPHA;
default:
return GL_UNKNOWN_MGL;
}
}
GLenum ConvertDepthFuncToGLEnum(DepthFunc v) {
switch (v) {
case DepthFunc::Never:
return GL_NEVER;
case DepthFunc::Less:
return GL_LESS;
case DepthFunc::Equal:
return GL_EQUAL;
case DepthFunc::LessEqual:
return GL_LEQUAL;
case DepthFunc::Greater:
return GL_GREATER;
case DepthFunc::NotEqual:
return GL_NOTEQUAL;
case DepthFunc::GreaterEqual:
return GL_GEQUAL;
case DepthFunc::Always:
return GL_ALWAYS;
default:
return GL_UNKNOWN_MGL;
}
}
GLenum ConvertPixelStoreParamToGLEnum(PixelStoreParam v) {
switch (v) {
case PixelStoreParam::PackAlignment:
return GL_PACK_ALIGNMENT;
case PixelStoreParam::PackRowLength:
return GL_PACK_ROW_LENGTH;
case PixelStoreParam::PackImageHeight:
return GL_PACK_IMAGE_HEIGHT;
case PixelStoreParam::PackSkipRows:
return GL_PACK_SKIP_ROWS;
case PixelStoreParam::PackSkipPixels:
return GL_PACK_SKIP_PIXELS;
case PixelStoreParam::PackSkipImages:
return GL_PACK_SKIP_IMAGES;
case PixelStoreParam::PackSwapBytes:
return GL_PACK_SWAP_BYTES;
case PixelStoreParam::PackLsbFirst:
return GL_PACK_LSB_FIRST;
case PixelStoreParam::UnpackAlignment:
return GL_UNPACK_ALIGNMENT;
case PixelStoreParam::UnpackRowLength:
return GL_UNPACK_ROW_LENGTH;
case PixelStoreParam::UnpackImageHeight:
return GL_UNPACK_IMAGE_HEIGHT;
case PixelStoreParam::UnpackSkipRows:
return GL_UNPACK_SKIP_ROWS;
case PixelStoreParam::UnpackSkipPixels:
return GL_UNPACK_SKIP_PIXELS;
case PixelStoreParam::UnpackSkipImages:
return GL_UNPACK_SKIP_IMAGES;
case PixelStoreParam::UnpackSwapBytes:
return GL_UNPACK_SWAP_BYTES;
case PixelStoreParam::UnpackLsbFirst:
return GL_UNPACK_LSB_FIRST;
default:
return GL_UNKNOWN_MGL;
}
}
GLenum ConvertCullFaceModeToGLEnum(CullFaceMode v) {
switch (v) {
case CullFaceMode::Front:
return GL_FRONT;
case CullFaceMode::Back:
return GL_BACK;
case CullFaceMode::FrontAndBack:
return GL_FRONT_AND_BACK;
default:
return GL_UNKNOWN_MGL;
}
}
GLenum ConvertCapabilityInputToGLEnum(CapabilityInput v) {
switch (v) {
case CapabilityInput::Blend:
return GL_BLEND;
case CapabilityInput::ClipDistance0:
return GL_CLIP_DISTANCE0;
case CapabilityInput::ClipDistance1:
return GL_CLIP_DISTANCE1;
case CapabilityInput::ClipDistance2:
return GL_CLIP_DISTANCE2;
case CapabilityInput::ClipDistance3:
return GL_CLIP_DISTANCE3;
case CapabilityInput::ClipDistance4:
return GL_CLIP_DISTANCE4;
case CapabilityInput::ClipDistance5:
return GL_CLIP_DISTANCE5;
case CapabilityInput::ClipDistance6:
return GL_CLIP_DISTANCE6;
case CapabilityInput::ClipDistance7:
return GL_CLIP_DISTANCE7;
case CapabilityInput::ColorLogicOp:
return GL_COLOR_LOGIC_OP;
case CapabilityInput::CullFace:
return GL_CULL_FACE;
case CapabilityInput::DebugOutput:
return GL_DEBUG_OUTPUT;
case CapabilityInput::DebugOutputSynchronous:
return GL_DEBUG_OUTPUT_SYNCHRONOUS;
case CapabilityInput::DepthClamp:
return GL_DEPTH_CLAMP;
case CapabilityInput::DepthTest:
return GL_DEPTH_TEST;
case CapabilityInput::Dither:
return GL_DITHER;
case CapabilityInput::FramebufferSrgb:
return GL_FRAMEBUFFER_SRGB;
case CapabilityInput::LineSmooth:
return GL_LINE_SMOOTH;
case CapabilityInput::Multisample:
return GL_MULTISAMPLE;
case CapabilityInput::PolygonOffsetFill:
return GL_POLYGON_OFFSET_FILL;
case CapabilityInput::PolygonOffsetLine:
return GL_POLYGON_OFFSET_LINE;
case CapabilityInput::PolygonOffsetPoint:
return GL_POLYGON_OFFSET_POINT;
case CapabilityInput::PolygonSmooth:
return GL_POLYGON_SMOOTH;
case CapabilityInput::PrimitiveRestart:
return GL_PRIMITIVE_RESTART;
case CapabilityInput::PrimitiveRestartFixedIndex:
return GL_PRIMITIVE_RESTART_FIXED_INDEX;
case CapabilityInput::RasterizerDiscard:
return GL_RASTERIZER_DISCARD;
case CapabilityInput::SampleAlphaToCoverage:
return GL_SAMPLE_ALPHA_TO_COVERAGE;
case CapabilityInput::SampleAlphaToOne:
return GL_SAMPLE_ALPHA_TO_ONE;
case CapabilityInput::SampleCoverage:
return GL_SAMPLE_COVERAGE;
case CapabilityInput::SampleShading:
return GL_SAMPLE_SHADING;
case CapabilityInput::SampleMask:
return GL_SAMPLE_MASK;
case CapabilityInput::ScissorTest:
return GL_SCISSOR_TEST;
case CapabilityInput::StencilTest:
return GL_STENCIL_TEST;
case CapabilityInput::TextureCubeMapSeamless:
return GL_TEXTURE_CUBE_MAP_SEAMLESS;
case CapabilityInput::ProgramPointSize:
return GL_PROGRAM_POINT_SIZE;
default:
return GL_UNKNOWN_MGL;
}
}
} // namespace MG_Util
} // namespace MobileGL