mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
Render performance fixes (by Asdow)
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8763 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+15
-14
@@ -1999,9 +1999,12 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
|||||||
bt = bodyTypeDB->Find(pSoldier);
|
bt = bodyTypeDB->Find(pSoldier);
|
||||||
}
|
}
|
||||||
UINT16 * pDefaultShadeTable = pShadeTable;
|
UINT16 * pDefaultShadeTable = pShadeTable;
|
||||||
RECT backRect;
|
RECT backRect; // Actually only needed if uiFlags & TILES_DIRTY, but must be initialized with values that make sense for the comparisons.
|
||||||
memset(&backRect, 0, sizeof(backRect)); // var actually only needed if uiFlags & TILES_DIRTY, but leaving stuff uninitialized...
|
backRect.left = SCREEN_WIDTH;
|
||||||
|
backRect.top = SCREEN_HEIGHT;
|
||||||
|
backRect.right = 0;
|
||||||
|
backRect.bottom = 0;
|
||||||
|
|
||||||
Layers::LayerGraphIterator layerIter;
|
Layers::LayerGraphIterator layerIter;
|
||||||
Layers::LayerGraphIterator layerEnd;
|
Layers::LayerGraphIterator layerEnd;
|
||||||
if (bt != NULL)
|
if (bt != NULL)
|
||||||
@@ -2221,12 +2224,7 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
|||||||
uiBrushWidth = (UINT32)pTrav->usWidth;
|
uiBrushWidth = (UINT32)pTrav->usWidth;
|
||||||
INT32 rLeft = sXPos + pTrav->sOffsetX;
|
INT32 rLeft = sXPos + pTrav->sOffsetX;
|
||||||
INT32 rTop = sYPos + pTrav->sOffsetY;
|
INT32 rTop = sYPos + pTrav->sOffsetY;
|
||||||
/*
|
|
||||||
backRect.left = ( !layer ) ? rLeft : min ( backRect.left, rLeft );
|
|
||||||
backRect.top = ( !layer ) ? rTop : min ( backRect.top, rTop );
|
|
||||||
backRect.right = ( !layer ) ? rLeft + ( INT32 ) uiBrushWidth : max ( backRect.right, rLeft + ( INT32 ) uiBrushWidth );
|
|
||||||
backRect.bottom = ( !layer ) ? rTop + ( INT32 ) uiBrushHeight : max ( backRect.bottom, rTop + ( INT32 ) uiBrushHeight );
|
|
||||||
*/
|
|
||||||
backRect.left = min(backRect.left, rLeft);
|
backRect.left = min(backRect.left, rLeft);
|
||||||
backRect.top = min(backRect.top, rTop);
|
backRect.top = min(backRect.top, rTop);
|
||||||
backRect.right = max(backRect.right, rLeft + (INT32)uiBrushWidth);
|
backRect.right = max(backRect.right, rLeft + (INT32)uiBrushWidth);
|
||||||
@@ -2837,12 +2835,15 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
|||||||
// as we don't know what the last rendered layer is upfront
|
// as we don't know what the last rendered layer is upfront
|
||||||
if (uiFlags & TILES_DIRTY)
|
if (uiFlags & TILES_DIRTY)
|
||||||
{
|
{
|
||||||
sXPos = (INT16)backRect.left;
|
if (!(uiLevelNodeFlags & LEVELNODE_LASTDYNAMIC))
|
||||||
sYPos = (INT16)backRect.top;
|
|
||||||
RegisterBackgroundRect(uiDirtyFlags, NULL, sXPos, sYPos, (INT16)backRect.right, (INT16)(__min((INT16)(backRect.bottom), gsVIEWPORT_WINDOW_END_Y)));
|
|
||||||
if (fSaveZ)
|
|
||||||
{
|
{
|
||||||
RegisterBackgroundRect(uiDirtyFlags | BGND_FLAG_SAVE_Z, NULL, sXPos, sYPos, (INT16)backRect.right, (INT16)(__min((INT16)(backRect.bottom), gsVIEWPORT_WINDOW_END_Y)));
|
sXPos = (INT16)backRect.left;
|
||||||
|
sYPos = (INT16)backRect.top;
|
||||||
|
RegisterBackgroundRect(uiDirtyFlags, NULL, sXPos, sYPos, (INT16)backRect.right, (INT16)(__min((INT16)(backRect.bottom), gsVIEWPORT_WINDOW_END_Y)));
|
||||||
|
if (fSaveZ)
|
||||||
|
{
|
||||||
|
RegisterBackgroundRect(uiDirtyFlags | BGND_FLAG_SAVE_Z, NULL, sXPos, sYPos, (INT16)backRect.right, (INT16)(__min((INT16)(backRect.bottom), gsVIEWPORT_WINDOW_END_Y)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// unset save buffer once flag after all layers have been rendered }
|
// unset save buffer once flag after all layers have been rendered }
|
||||||
|
|||||||
Reference in New Issue
Block a user