mirror of
https://github.com/SFML/SFML.git
synced 2024-11-25 04:41:05 +08:00
Fixed cache state not correctly being ignored when switching between RenderTargets within a single context.
This commit is contained in:
parent
f05baef521
commit
dfd14dbc1b
@ -662,7 +662,7 @@ void RenderTarget::applyCurrentView()
|
|||||||
// Set the scissor rectangle and enable/disable scissor testing
|
// Set the scissor rectangle and enable/disable scissor testing
|
||||||
if (m_view.getScissor() == FloatRect({0, 0}, {1, 1}))
|
if (m_view.getScissor() == FloatRect({0, 0}, {1, 1}))
|
||||||
{
|
{
|
||||||
if (m_cache.scissorEnabled)
|
if (!m_cache.enable || m_cache.scissorEnabled)
|
||||||
{
|
{
|
||||||
glCheck(glDisable(GL_SCISSOR_TEST));
|
glCheck(glDisable(GL_SCISSOR_TEST));
|
||||||
m_cache.scissorEnabled = false;
|
m_cache.scissorEnabled = false;
|
||||||
@ -674,7 +674,7 @@ void RenderTarget::applyCurrentView()
|
|||||||
const int scissorTop = static_cast<int>(getSize().y) - (pixelScissor.position.y + pixelScissor.size.y);
|
const int scissorTop = static_cast<int>(getSize().y) - (pixelScissor.position.y + pixelScissor.size.y);
|
||||||
glCheck(glScissor(pixelScissor.position.x, scissorTop, pixelScissor.size.x, pixelScissor.size.y));
|
glCheck(glScissor(pixelScissor.position.x, scissorTop, pixelScissor.size.x, pixelScissor.size.y));
|
||||||
|
|
||||||
if (!m_cache.scissorEnabled)
|
if (!m_cache.enable || !m_cache.scissorEnabled)
|
||||||
{
|
{
|
||||||
glCheck(glEnable(GL_SCISSOR_TEST));
|
glCheck(glEnable(GL_SCISSOR_TEST));
|
||||||
m_cache.scissorEnabled = true;
|
m_cache.scissorEnabled = true;
|
||||||
@ -754,7 +754,7 @@ void RenderTarget::applyStencilMode(const StencilMode& mode)
|
|||||||
// Fast path if we have a default (disabled) stencil mode
|
// Fast path if we have a default (disabled) stencil mode
|
||||||
if (mode == StencilMode())
|
if (mode == StencilMode())
|
||||||
{
|
{
|
||||||
if (m_cache.stencilEnabled)
|
if (!m_cache.enable || m_cache.stencilEnabled)
|
||||||
{
|
{
|
||||||
glCheck(glDisable(GL_STENCIL_TEST));
|
glCheck(glDisable(GL_STENCIL_TEST));
|
||||||
glCheck(glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE));
|
glCheck(glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE));
|
||||||
@ -765,7 +765,7 @@ void RenderTarget::applyStencilMode(const StencilMode& mode)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Apply the stencil mode
|
// Apply the stencil mode
|
||||||
if (!m_cache.stencilEnabled)
|
if (!m_cache.enable || !m_cache.stencilEnabled)
|
||||||
glCheck(glEnable(GL_STENCIL_TEST));
|
glCheck(glEnable(GL_STENCIL_TEST));
|
||||||
|
|
||||||
glCheck(glStencilOp(GL_KEEP,
|
glCheck(glStencilOp(GL_KEEP,
|
||||||
|
Loading…
Reference in New Issue
Block a user