endRenderMask method

  1. @override
void endRenderMask(
  1. RenderState renderState,
  2. RenderMask mask
)
override

Implementation

@override
void endRenderMask(RenderState renderState, RenderMask mask) {
  _activeRenderProgram.flush();

  final maskState = _getMaskStates().removeLast();
  if (maskState is _ScissorMaskState) {
    _updateScissorTest(_getLastScissorValue());
  } else if (maskState is _StencilMaskState) {
    _renderingContext.enable(gl.WebGL.STENCIL_TEST);
    _renderingContext.stencilOp(gl.WebGL.KEEP, gl.WebGL.KEEP, gl.WebGL.DECR);
    _renderingContext.stencilFunc(gl.WebGL.EQUAL, maskState.value, 0xFF);
    _renderingContext.colorMask(false, false, false, false);
    mask.renderMask(renderState);

    _activeRenderProgram.flush();
    _renderingContext.stencilOp(gl.WebGL.KEEP, gl.WebGL.KEEP, gl.WebGL.KEEP);
    _renderingContext.colorMask(true, true, true, true);
    _updateStencilTest(maskState.value - 1);
  }
}