From 92ed1537a0e79facded3c81f50f7767962d70d6f Mon Sep 17 00:00:00 2001 From: Nicolas Hake Date: Mon, 8 Feb 2016 22:56:32 +0100 Subject: [PATCH] Fix off-by-one error in FoW renderer (#1678) The FoW renderer would try drawing to texture coordinates one pixel too high (i.e. if the texture was 256 pixels high, it would draw to pixels with 1 <= y <= 256 instead of 0..255). --- src/landscape/fow/C4FoWRegion.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/landscape/fow/C4FoWRegion.cpp b/src/landscape/fow/C4FoWRegion.cpp index fe0ae785c..d3277a424 100644 --- a/src/landscape/fow/C4FoWRegion.cpp +++ b/src/landscape/fow/C4FoWRegion.cpp @@ -91,22 +91,22 @@ bool C4FoWRegion::BindFramebuf() if (y < pSurface->Hgt / 2 && x < pSurface->Wdt) { // Normals and intensity - pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y, pSurface->GetPixDw(x, pSurface->Hgt/2 - y, false)); - pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y, pBackSurface->GetPixDw(x, pBackSurface->Hgt/2 - y, false)); + pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y - 1, pSurface->GetPixDw(x, pSurface->Hgt/2 - y - 1, false)); + pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y - 1, pBackSurface->GetPixDw(x, pBackSurface->Hgt/2 - y - 1, false)); // Color - pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y + iHgt / 2, pSurface->GetPixDw(x, pSurface->Hgt/2 - y + pSurface->Hgt / 2, false)); - pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y + iHgt / 2, pBackSurface->GetPixDw(x, pBackSurface->Hgt/2 - y + pBackSurface->Hgt / 2, false)); + pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y + iHgt / 2 - 1, pSurface->GetPixDw(x, pSurface->Hgt/2 - y + pSurface->Hgt / 2 - 1, false)); + pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y + iHgt / 2 - 1, pBackSurface->GetPixDw(x, pBackSurface->Hgt/2 - y + pBackSurface->Hgt / 2 - 1, false)); } else { // Normals and intensity - pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y, 0x000000ff); - pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y, 0x000000ff); + pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y - 1, 0x000000ff); + pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y - 1, 0x000000ff); // Color - pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y + iHgt / 2, 0x000000ff); - pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y + iHgt / 2, 0x000000ff); + pNewSurface->SetPixDw(x, pNewSurface->Hgt/2 - y + iHgt / 2 - 1, 0x000000ff); + pNewBackSurface->SetPixDw(x, pNewBackSurface->Hgt/2 - y + iHgt / 2 - 1, 0x000000ff); } } }