void AccuracyRingRenderable::RenderRingEffects(Eegeo::Rendering::GLState &glState) const { m_colorMaterial.SetState(glState); Eegeo::v4 ringCol = m_ringColor; Eegeo::v4 innerCol = m_innerColor; m_colorMaterial.SetColor(ringCol); glState.ColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); glState.Blend.Enable(); glState.StencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glState.ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glState.StencilFunc(GL_EQUAL, StencilOuterLayer, 0xFF); glState.BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glState.BlendEquation(GL_FUNC_ADD); m_quadRenderable.Render(glState); glState.Blend.Enable(); glState.BlendFunc(GL_DST_COLOR, GL_SRC_ALPHA); glState.BlendEquation(GL_FUNC_ADD); glState.StencilFunc(GL_EQUAL, StencilInnerLayer, 0xFF); m_colorMaterial.SetColor(innerCol); m_quadRenderable.Render(glState); }
void AccuracyRingRenderable::RenderClearStencil(Eegeo::Rendering::GLState& glState) const { m_colorMaterial.SetState(glState); glState.DepthMask(GL_FALSE); glState.DepthTest.Enable(); glState.DepthFunc(GL_ALWAYS); glState.ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glState.Blend.Disable(); glState.StencilTest.Enable(); glState.StencilFunc(GL_ALWAYS, StencilClear, 0xFF); glState.StencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); m_quadRenderable.Render(glState); }