public void BeginSpriteBatch(RenderStateVariables renderStates, Layer layer, BeginType beginType, Camera camera)
{
Matrix matrix = GetZoomAndMatrix(layer, camera);
SamplerState samplerState = GetSamplerState(renderStates);
bool isFullscreen = renderStates.ClipRectangle == null;
RasterizerState rasterizerState;
if (isFullscreen)
{
rasterizerState = scissorTestDisabled;
}
else
{
rasterizerState = scissorTestEnabled;
}
Rectangle scissorRectangle = new Rectangle();
if (rasterizerState.ScissorTestEnable)
{
scissorRectangle = renderStates.ClipRectangle.Value;
}
DepthStencilState depthStencilState = DepthStencilState.DepthRead;
if (beginType == BeginType.Begin)
{
mSpriteBatch.ReplaceRenderStates(SpriteSortMode.Immediate, renderStates.BlendState,
samplerState,
depthStencilState,
rasterizerState,
null, matrix,
scissorRectangle);
}
else
{
mSpriteBatch.PushRenderStates(SpriteSortMode.Immediate, renderStates.BlendState,
samplerState,
depthStencilState,
rasterizerState,
null, matrix,
scissorRectangle);
}
}