PR feedback

This commit is contained in:
Bradley Austin Davis 2016-07-26 11:53:37 -07:00
parent 3962487ee3
commit ac743b6acb

View file

@ -181,26 +181,24 @@ void GLBackend::do_setStateDepthTest(State::DepthTest test) {
} }
} }
void GLBackend::do_setStateStencil(State::StencilActivation activation, State::StencilTest frontTest, State::StencilTest backTest) { void GLBackend::do_setStateStencil(State::StencilActivation activation, State::StencilTest testFront, State::StencilTest testBack) {
const auto& currentActivation = _pipeline._stateCache.stencilActivation; const auto& currentActivation = _pipeline._stateCache.stencilActivation;
const auto& currentTestFront = _pipeline._stateCache.stencilTestFront; const auto& currentTestFront = _pipeline._stateCache.stencilTestFront;
const auto& currentTestBack = _pipeline._stateCache.stencilTestBack; const auto& currentTestBack = _pipeline._stateCache.stencilTestBack;
if ((currentActivation != activation) if ((currentActivation != activation)
|| (currentTestFront != frontTest) || (currentTestFront != testFront)
|| (currentTestBack != backTest)) { || (currentTestBack != testBack)) {
if (activation.isEnabled()) { if (activation.isEnabled()) {
glEnable(GL_STENCIL_TEST); glEnable(GL_STENCIL_TEST);
} } else {
else {
glDisable(GL_STENCIL_TEST); glDisable(GL_STENCIL_TEST);
} }
if (activation.getWriteMaskFront() != activation.getWriteMaskBack()) { if (activation.getWriteMaskFront() != activation.getWriteMaskBack()) {
glStencilMaskSeparate(GL_FRONT, activation.getWriteMaskFront()); glStencilMaskSeparate(GL_FRONT, activation.getWriteMaskFront());
glStencilMaskSeparate(GL_BACK, activation.getWriteMaskBack()); glStencilMaskSeparate(GL_BACK, activation.getWriteMaskBack());
} } else {
else {
glStencilMask(activation.getWriteMaskFront()); glStencilMask(activation.getWriteMaskFront());
} }
@ -214,22 +212,22 @@ void GLBackend::do_setStateStencil(State::StencilActivation activation, State::S
GL_INCR, GL_INCR,
GL_DECR }; GL_DECR };
if (frontTest != backTest) { if (testFront != testBack) {
glStencilOpSeparate(GL_FRONT, STENCIL_OPS[frontTest.getFailOp()], STENCIL_OPS[frontTest.getPassOp()], STENCIL_OPS[frontTest.getDepthFailOp()]); glStencilOpSeparate(GL_FRONT, STENCIL_OPS[testFront.getFailOp()], STENCIL_OPS[testFront.getPassOp()], STENCIL_OPS[testFront.getDepthFailOp()]);
glStencilFuncSeparate(GL_FRONT, COMPARISON_TO_GL[frontTest.getFunction()], frontTest.getReference(), frontTest.getReadMask()); glStencilFuncSeparate(GL_FRONT, COMPARISON_TO_GL[testFront.getFunction()], testFront.getReference(), testFront.getReadMask());
glStencilOpSeparate(GL_BACK, STENCIL_OPS[backTest.getFailOp()], STENCIL_OPS[backTest.getPassOp()], STENCIL_OPS[backTest.getDepthFailOp()]); glStencilOpSeparate(GL_BACK, STENCIL_OPS[testBack.getFailOp()], STENCIL_OPS[testBack.getPassOp()], STENCIL_OPS[testBack.getDepthFailOp()]);
glStencilFuncSeparate(GL_BACK, COMPARISON_TO_GL[backTest.getFunction()], backTest.getReference(), backTest.getReadMask()); glStencilFuncSeparate(GL_BACK, COMPARISON_TO_GL[testBack.getFunction()], testBack.getReference(), testBack.getReadMask());
} else { } else {
glStencilOp(STENCIL_OPS[frontTest.getFailOp()], STENCIL_OPS[frontTest.getPassOp()], STENCIL_OPS[frontTest.getDepthFailOp()]); glStencilOp(STENCIL_OPS[testFront.getFailOp()], STENCIL_OPS[testFront.getPassOp()], STENCIL_OPS[testFront.getDepthFailOp()]);
glStencilFunc(COMPARISON_TO_GL[frontTest.getFunction()], frontTest.getReference(), frontTest.getReadMask()); glStencilFunc(COMPARISON_TO_GL[testFront.getFunction()], testFront.getReference(), testFront.getReadMask());
} }
(void)CHECK_GL_ERROR(); (void)CHECK_GL_ERROR();
_pipeline._stateCache.stencilActivation = activation; _pipeline._stateCache.stencilActivation = activation;
_pipeline._stateCache.stencilTestFront = frontTest; _pipeline._stateCache.stencilTestFront = testFront;
_pipeline._stateCache.stencilTestBack = backTest; _pipeline._stateCache.stencilTestBack = testBack;
} }
} }