mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-11 13:48:30 +09:00
Merge branch 'Feat/Backend-Direct-GLES' of https://github.com/MobileGL-Dev/MobileGL into Feat/Backend-Direct-GLES
This commit is contained in:
@@ -15,27 +15,27 @@ namespace MobileGL {
|
|||||||
|
|
||||||
// -------------------- Rasterization --------------------
|
// -------------------- Rasterization --------------------
|
||||||
void RenderState::SetViewport(IntVec4 viewport) {
|
void RenderState::SetViewport(IntVec4 viewport) {
|
||||||
m_viewport = viewport;
|
m_parameters.Viewport = viewport;
|
||||||
}
|
}
|
||||||
|
|
||||||
const IntVec4& RenderState::GetViewport() const {
|
const IntVec4& RenderState::GetViewport() const {
|
||||||
return m_viewport;
|
return m_parameters.Viewport;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- Capabilities --------------------
|
// -------------------- Capabilities --------------------
|
||||||
void RenderState::SetCapability(CapabilityInput cap, Bool enabled) {
|
void RenderState::SetCapability(CapabilityInput cap, Bool enabled) {
|
||||||
switch (cap) {
|
switch (cap) {
|
||||||
case CapabilityInput::Blend:
|
case CapabilityInput::Blend:
|
||||||
m_blendEnabled = enabled;
|
m_parameters.BlendEnabled = enabled;
|
||||||
break;
|
break;
|
||||||
case CapabilityInput::DepthTest:
|
case CapabilityInput::DepthTest:
|
||||||
m_depthTestEnabled = enabled;
|
m_parameters.DepthTestEnabled = enabled;
|
||||||
break;
|
break;
|
||||||
case CapabilityInput::CullFace:
|
case CapabilityInput::CullFace:
|
||||||
m_cullFaceEnabled = enabled;
|
m_parameters.CullFaceEnabled = enabled;
|
||||||
break;
|
break;
|
||||||
case CapabilityInput::ScissorTest:
|
case CapabilityInput::ScissorTest:
|
||||||
m_scissorTestEnabled = enabled;
|
m_parameters.ScissorTestEnabled = enabled;
|
||||||
break;
|
break;
|
||||||
default: // not supported currently
|
default: // not supported currently
|
||||||
break;
|
break;
|
||||||
@@ -45,13 +45,13 @@ namespace MobileGL {
|
|||||||
Bool RenderState::IsCapabilityEnabled(CapabilityInput cap) const {
|
Bool RenderState::IsCapabilityEnabled(CapabilityInput cap) const {
|
||||||
switch (cap) {
|
switch (cap) {
|
||||||
case CapabilityInput::Blend:
|
case CapabilityInput::Blend:
|
||||||
return m_blendEnabled;
|
return m_parameters.BlendEnabled;
|
||||||
case CapabilityInput::DepthTest:
|
case CapabilityInput::DepthTest:
|
||||||
return m_depthTestEnabled;
|
return m_parameters.DepthTestEnabled;
|
||||||
case CapabilityInput::CullFace:
|
case CapabilityInput::CullFace:
|
||||||
return m_cullFaceEnabled;
|
return m_parameters.CullFaceEnabled;
|
||||||
case CapabilityInput::ScissorTest:
|
case CapabilityInput::ScissorTest:
|
||||||
return m_scissorTestEnabled;
|
return m_parameters.ScissorTestEnabled;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -60,114 +60,114 @@ namespace MobileGL {
|
|||||||
// -------------------- Blending --------------------
|
// -------------------- Blending --------------------
|
||||||
void RenderState::SetBlendFunc(BlendFactor srcRGB, BlendFactor dstRGB, BlendFactor srcAlpha,
|
void RenderState::SetBlendFunc(BlendFactor srcRGB, BlendFactor dstRGB, BlendFactor srcAlpha,
|
||||||
BlendFactor dstAlpha) {
|
BlendFactor dstAlpha) {
|
||||||
m_srcFactorRGB = srcRGB;
|
m_parameters.SrcFactorRGB = srcRGB;
|
||||||
m_dstFactorRGB = dstRGB;
|
m_parameters.DstFactorRGB = dstRGB;
|
||||||
m_srcFactorAlpha = srcAlpha;
|
m_parameters.SrcFactorAlpha = srcAlpha;
|
||||||
m_dstFactorAlpha = dstAlpha;
|
m_parameters.DstFactorAlpha = dstAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderState::GetBlendFunc(BlendFactor& srcRGB, BlendFactor& dstRGB, BlendFactor& srcAlpha,
|
void RenderState::GetBlendFunc(BlendFactor& srcRGB, BlendFactor& dstRGB, BlendFactor& srcAlpha,
|
||||||
BlendFactor& dstAlpha) const {
|
BlendFactor& dstAlpha) const {
|
||||||
srcRGB = m_srcFactorRGB;
|
srcRGB = m_parameters.SrcFactorRGB;
|
||||||
dstRGB = m_dstFactorRGB;
|
dstRGB = m_parameters.DstFactorRGB;
|
||||||
srcAlpha = m_srcFactorAlpha;
|
srcAlpha = m_parameters.SrcFactorAlpha;
|
||||||
dstAlpha = m_dstFactorAlpha;
|
dstAlpha = m_parameters.DstFactorAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- Depth --------------------
|
// -------------------- Depth --------------------
|
||||||
void RenderState::SetDepthFunc(DepthTestFunc func) {
|
void RenderState::SetDepthFunc(DepthTestFunc func) {
|
||||||
m_depthFunc = func;
|
m_parameters.DepthFunc = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
DepthTestFunc RenderState::GetDepthFunc() const {
|
DepthTestFunc RenderState::GetDepthFunc() const {
|
||||||
return m_depthFunc;
|
return m_parameters.DepthFunc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderState::SetDepthMask(Bool flag) {
|
void RenderState::SetDepthMask(Bool flag) {
|
||||||
m_depthMask = flag;
|
m_parameters.DepthMask = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool RenderState::GetDepthMask() const {
|
Bool RenderState::GetDepthMask() const {
|
||||||
return m_depthMask;
|
return m_parameters.DepthMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- Color Mask --------------------
|
// -------------------- Color Mask --------------------
|
||||||
void RenderState::SetColorMask(BoolVec4 mask) {
|
void RenderState::SetColorMask(BoolVec4 mask) {
|
||||||
m_colorMask = mask;
|
m_parameters.ColorMask = mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
const BoolVec4 RenderState::GetColorMask() const {
|
const BoolVec4 RenderState::GetColorMask() const {
|
||||||
return m_colorMask;
|
return m_parameters.ColorMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- Clear State --------------------
|
// -------------------- Clear State --------------------
|
||||||
void RenderState::SetClearColor(FloatVec4 color) {
|
void RenderState::SetClearColor(FloatVec4 color) {
|
||||||
m_clearColor = color;
|
m_parameters.ClearColor = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
const FloatVec4& RenderState::GetClearColor() const {
|
const FloatVec4& RenderState::GetClearColor() const {
|
||||||
return m_clearColor;
|
return m_parameters.ClearColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderState::SetClearDepth(Float depth) {
|
void RenderState::SetClearDepth(Float depth) {
|
||||||
m_clearDepth = depth;
|
m_parameters.ClearDepth = depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
Float RenderState::GetClearDepth() const {
|
Float RenderState::GetClearDepth() const {
|
||||||
return m_clearDepth;
|
return m_parameters.ClearDepth;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- Pixel Store --------------------
|
// -------------------- Pixel Store --------------------
|
||||||
void RenderState::SetPixelStoreParam(PixelStoreParam param, Int value) {
|
void RenderState::SetPixelStoreParam(PixelStoreParam param, Int value) {
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case PixelStoreParam::PackAlignment:
|
case PixelStoreParam::PackAlignment:
|
||||||
m_packParameters.Alignment = value;
|
m_parameters.PackParameters.Alignment = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::PackRowLength:
|
case PixelStoreParam::PackRowLength:
|
||||||
m_packParameters.RowLength = value;
|
m_parameters.PackParameters.RowLength = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::PackImageHeight:
|
case PixelStoreParam::PackImageHeight:
|
||||||
m_packParameters.ImageHeight = value;
|
m_parameters.PackParameters.ImageHeight = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::PackSkipPixels:
|
case PixelStoreParam::PackSkipPixels:
|
||||||
m_packParameters.SkipPixels = value;
|
m_parameters.PackParameters.SkipPixels = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::PackSkipRows:
|
case PixelStoreParam::PackSkipRows:
|
||||||
m_packParameters.SkipRows = value;
|
m_parameters.PackParameters.SkipRows = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::PackSkipImages:
|
case PixelStoreParam::PackSkipImages:
|
||||||
m_packParameters.SkipImages = value;
|
m_parameters.PackParameters.SkipImages = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::PackSwapBytes:
|
case PixelStoreParam::PackSwapBytes:
|
||||||
m_packParameters.SwapBytes = value != 0;
|
m_parameters.PackParameters.SwapBytes = value != 0;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::PackLsbFirst:
|
case PixelStoreParam::PackLsbFirst:
|
||||||
m_packParameters.LSBFirst = value != 0;
|
m_parameters.PackParameters.LSBFirst = value != 0;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackAlignment:
|
case PixelStoreParam::UnpackAlignment:
|
||||||
m_unpackParameters.Alignment = value;
|
m_parameters.UnpackParameters.Alignment = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackRowLength:
|
case PixelStoreParam::UnpackRowLength:
|
||||||
m_unpackParameters.RowLength = value;
|
m_parameters.UnpackParameters.RowLength = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackImageHeight:
|
case PixelStoreParam::UnpackImageHeight:
|
||||||
m_unpackParameters.ImageHeight = value;
|
m_parameters.UnpackParameters.ImageHeight = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackSkipPixels:
|
case PixelStoreParam::UnpackSkipPixels:
|
||||||
m_unpackParameters.SkipPixels = value;
|
m_parameters.UnpackParameters.SkipPixels = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackSkipRows:
|
case PixelStoreParam::UnpackSkipRows:
|
||||||
m_unpackParameters.SkipRows = value;
|
m_parameters.UnpackParameters.SkipRows = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackSkipImages:
|
case PixelStoreParam::UnpackSkipImages:
|
||||||
m_unpackParameters.SkipImages = value;
|
m_parameters.UnpackParameters.SkipImages = value;
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackSwapBytes:
|
case PixelStoreParam::UnpackSwapBytes:
|
||||||
m_unpackParameters.SwapBytes = value != 0;
|
m_parameters.UnpackParameters.SwapBytes = value != 0;
|
||||||
MGLOG_D("%s: SwapBytes = %s", __func__, value ? "true" : "false");
|
MGLOG_D("%s: SwapBytes = %s", __func__, value ? "true" : "false");
|
||||||
break;
|
break;
|
||||||
case PixelStoreParam::UnpackLsbFirst:
|
case PixelStoreParam::UnpackLsbFirst:
|
||||||
m_unpackParameters.LSBFirst = value != 0;
|
m_parameters.UnpackParameters.LSBFirst = value != 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MOBILEGL_ASSERT(false, "Invalid PixelStoreParam enum: %d", static_cast<int>(param));
|
MOBILEGL_ASSERT(false, "Invalid PixelStoreParam enum: %d", static_cast<int>(param));
|
||||||
@@ -178,37 +178,37 @@ namespace MobileGL {
|
|||||||
Int RenderState::GetPixelStoreParam(PixelStoreParam param) const {
|
Int RenderState::GetPixelStoreParam(PixelStoreParam param) const {
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case PixelStoreParam::PackAlignment:
|
case PixelStoreParam::PackAlignment:
|
||||||
return m_packParameters.Alignment;
|
return m_parameters.PackParameters.Alignment;
|
||||||
case PixelStoreParam::PackRowLength:
|
case PixelStoreParam::PackRowLength:
|
||||||
return m_packParameters.RowLength;
|
return m_parameters.PackParameters.RowLength;
|
||||||
case PixelStoreParam::PackImageHeight:
|
case PixelStoreParam::PackImageHeight:
|
||||||
return m_packParameters.ImageHeight;
|
return m_parameters.PackParameters.ImageHeight;
|
||||||
case PixelStoreParam::PackSkipPixels:
|
case PixelStoreParam::PackSkipPixels:
|
||||||
return m_packParameters.SkipPixels;
|
return m_parameters.PackParameters.SkipPixels;
|
||||||
case PixelStoreParam::PackSkipRows:
|
case PixelStoreParam::PackSkipRows:
|
||||||
return m_packParameters.SkipRows;
|
return m_parameters.PackParameters.SkipRows;
|
||||||
case PixelStoreParam::PackSkipImages:
|
case PixelStoreParam::PackSkipImages:
|
||||||
return m_packParameters.SkipImages;
|
return m_parameters.PackParameters.SkipImages;
|
||||||
case PixelStoreParam::PackSwapBytes:
|
case PixelStoreParam::PackSwapBytes:
|
||||||
return m_packParameters.SwapBytes ? 1 : 0;
|
return m_parameters.PackParameters.SwapBytes ? 1 : 0;
|
||||||
case PixelStoreParam::PackLsbFirst:
|
case PixelStoreParam::PackLsbFirst:
|
||||||
return m_packParameters.LSBFirst ? 1 : 0;
|
return m_parameters.PackParameters.LSBFirst ? 1 : 0;
|
||||||
case PixelStoreParam::UnpackAlignment:
|
case PixelStoreParam::UnpackAlignment:
|
||||||
return m_unpackParameters.Alignment;
|
return m_parameters.UnpackParameters.Alignment;
|
||||||
case PixelStoreParam::UnpackRowLength:
|
case PixelStoreParam::UnpackRowLength:
|
||||||
return m_unpackParameters.RowLength;
|
return m_parameters.UnpackParameters.RowLength;
|
||||||
case PixelStoreParam::UnpackImageHeight:
|
case PixelStoreParam::UnpackImageHeight:
|
||||||
return m_unpackParameters.ImageHeight;
|
return m_parameters.UnpackParameters.ImageHeight;
|
||||||
case PixelStoreParam::UnpackSkipPixels:
|
case PixelStoreParam::UnpackSkipPixels:
|
||||||
return m_unpackParameters.SkipPixels;
|
return m_parameters.UnpackParameters.SkipPixels;
|
||||||
case PixelStoreParam::UnpackSkipRows:
|
case PixelStoreParam::UnpackSkipRows:
|
||||||
return m_unpackParameters.SkipRows;
|
return m_parameters.UnpackParameters.SkipRows;
|
||||||
case PixelStoreParam::UnpackSkipImages:
|
case PixelStoreParam::UnpackSkipImages:
|
||||||
return m_unpackParameters.SkipImages;
|
return m_parameters.UnpackParameters.SkipImages;
|
||||||
case PixelStoreParam::UnpackSwapBytes:
|
case PixelStoreParam::UnpackSwapBytes:
|
||||||
return m_unpackParameters.SwapBytes ? 1 : 0;
|
return m_parameters.UnpackParameters.SwapBytes ? 1 : 0;
|
||||||
case PixelStoreParam::UnpackLsbFirst:
|
case PixelStoreParam::UnpackLsbFirst:
|
||||||
return m_unpackParameters.LSBFirst ? 1 : 0;
|
return m_parameters.UnpackParameters.LSBFirst ? 1 : 0;
|
||||||
default:
|
default:
|
||||||
MOBILEGL_ASSERT(false, "Invalid PixelStoreParam enum: %d", static_cast<int>(param));
|
MOBILEGL_ASSERT(false, "Invalid PixelStoreParam enum: %d", static_cast<int>(param));
|
||||||
return 0;
|
return 0;
|
||||||
@@ -216,25 +216,25 @@ namespace MobileGL {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PixelStoreParameters RenderState::GetPixelStoreParameters(Bool isUnpack) const {
|
PixelStoreParameters RenderState::GetPixelStoreParameters(Bool isUnpack) const {
|
||||||
return isUnpack ? m_unpackParameters : m_packParameters;
|
return isUnpack ? m_parameters.UnpackParameters : m_parameters.PackParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- Cull Face --------------------
|
// -------------------- Cull Face --------------------
|
||||||
void RenderState::SetCullFaceMode(CullFaceMode mode) {
|
void RenderState::SetCullFaceMode(CullFaceMode mode) {
|
||||||
m_cullFaceMode = mode;
|
m_parameters.CullFaceModeSetting = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
CullFaceMode RenderState::GetCullFaceMode() const {
|
CullFaceMode RenderState::GetCullFaceMode() const {
|
||||||
return m_cullFaceMode;
|
return m_parameters.CullFaceModeSetting;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------- Scissor ---------------------
|
// --------------------- Scissor ---------------------
|
||||||
void RenderState::SetScissorBox(IntVec4 box) {
|
void RenderState::SetScissorBox(IntVec4 box) {
|
||||||
m_scissorBox = box;
|
m_parameters.ScissorBox = box;
|
||||||
}
|
}
|
||||||
|
|
||||||
const IntVec4& RenderState::GetScissorBox() const {
|
const IntVec4& RenderState::GetScissorBox() const {
|
||||||
return m_scissorBox;
|
return m_parameters.ScissorBox;
|
||||||
}
|
}
|
||||||
} // namespace GLState
|
} // namespace GLState
|
||||||
} // namespace MG_State
|
} // namespace MG_State
|
||||||
|
|||||||
@@ -7,9 +7,8 @@
|
|||||||
// End of Source File Header
|
// End of Source File Header
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "MG_Util/Math/VectorTypes.h"
|
|
||||||
#include "MG_Util/Types.h"
|
|
||||||
#include <Includes.h>
|
#include <Includes.h>
|
||||||
|
#include <MG_Util/Math/VectorTypes.h>
|
||||||
|
|
||||||
namespace MobileGL {
|
namespace MobileGL {
|
||||||
enum class BlendFactor {
|
enum class BlendFactor {
|
||||||
@@ -128,6 +127,42 @@ namespace MobileGL {
|
|||||||
Int Alignment = 4;
|
Int Alignment = 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct RenderStateParameters {
|
||||||
|
// Rasterization
|
||||||
|
IntVec4 Viewport = IntVec4(0, 0, 0, 0); // x, y, width, height
|
||||||
|
|
||||||
|
// Blending
|
||||||
|
Bool BlendEnabled = false;
|
||||||
|
BlendFactor SrcFactorRGB = BlendFactor::One;
|
||||||
|
BlendFactor DstFactorRGB = BlendFactor::Zero;
|
||||||
|
BlendFactor SrcFactorAlpha = BlendFactor::One;
|
||||||
|
BlendFactor DstFactorAlpha = BlendFactor::Zero;
|
||||||
|
|
||||||
|
// Depth
|
||||||
|
Bool DepthTestEnabled = false;
|
||||||
|
DepthTestFunc DepthFunc = DepthTestFunc::Less;
|
||||||
|
Bool DepthMask = true;
|
||||||
|
|
||||||
|
// Color Mask
|
||||||
|
BoolVec4 ColorMask = BoolVec4(true, true, true, true);
|
||||||
|
|
||||||
|
// Clear State
|
||||||
|
FloatVec4 ClearColor = FloatVec4(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
Float ClearDepth = 1.0f;
|
||||||
|
|
||||||
|
// Pixel Store
|
||||||
|
PixelStoreParameters PackParameters;
|
||||||
|
PixelStoreParameters UnpackParameters;
|
||||||
|
|
||||||
|
// Cull Face
|
||||||
|
Bool CullFaceEnabled = false;
|
||||||
|
CullFaceMode CullFaceModeSetting = CullFaceMode::Back;
|
||||||
|
|
||||||
|
// Scissor
|
||||||
|
Bool ScissorTestEnabled = false;
|
||||||
|
IntVec4 ScissorBox = IntVec4(0, 0, 0, 0); // x, y, width, height
|
||||||
|
};
|
||||||
|
|
||||||
namespace MG_State {
|
namespace MG_State {
|
||||||
namespace GLState {
|
namespace GLState {
|
||||||
class RenderState {
|
class RenderState {
|
||||||
@@ -177,39 +212,7 @@ namespace MobileGL {
|
|||||||
const IntVec4& GetScissorBox() const; // x, y, width, height
|
const IntVec4& GetScissorBox() const; // x, y, width, height
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Rasterization
|
RenderStateParameters m_parameters;
|
||||||
IntVec4 m_viewport = IntVec4(0, 0, 0, 0); // x, y, width, height
|
|
||||||
|
|
||||||
// Blending
|
|
||||||
Bool m_blendEnabled = false;
|
|
||||||
BlendFactor m_srcFactorRGB = BlendFactor::One;
|
|
||||||
BlendFactor m_dstFactorRGB = BlendFactor::Zero;
|
|
||||||
BlendFactor m_srcFactorAlpha = BlendFactor::One;
|
|
||||||
BlendFactor m_dstFactorAlpha = BlendFactor::Zero;
|
|
||||||
|
|
||||||
// Depth
|
|
||||||
Bool m_depthTestEnabled = false;
|
|
||||||
DepthTestFunc m_depthFunc = DepthTestFunc::Less;
|
|
||||||
Bool m_depthMask = true;
|
|
||||||
|
|
||||||
// Color Mask
|
|
||||||
BoolVec4 m_colorMask = BoolVec4(true, true, true, true);
|
|
||||||
|
|
||||||
// Clear State
|
|
||||||
FloatVec4 m_clearColor = FloatVec4(0.0f, 0.0f, 0.0f, 1.0f);
|
|
||||||
Float m_clearDepth = 1.0f;
|
|
||||||
|
|
||||||
// Pixel Store
|
|
||||||
PixelStoreParameters m_packParameters;
|
|
||||||
PixelStoreParameters m_unpackParameters;
|
|
||||||
|
|
||||||
// Cull Face
|
|
||||||
Bool m_cullFaceEnabled = false;
|
|
||||||
CullFaceMode m_cullFaceMode = CullFaceMode::Back;
|
|
||||||
|
|
||||||
// Scissor
|
|
||||||
Bool m_scissorTestEnabled = false;
|
|
||||||
IntVec4 m_scissorBox = IntVec4(0, 0, 0, 0); // x, y, width, height
|
|
||||||
};
|
};
|
||||||
} // namespace GLState
|
} // namespace GLState
|
||||||
} // namespace MG_State
|
} // namespace MG_State
|
||||||
|
|||||||
Reference in New Issue
Block a user