mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 08:04:40 +00:00
Fix mipmap count and potential crash for non square textures that are allocated with GBitmap class
This commit is contained in:
parent
11532e10cc
commit
f6d624be8f
2 changed files with 5 additions and 16 deletions
|
|
@ -327,7 +327,10 @@ void GBitmap::allocateBitmap(const U32 in_width, const U32 in_height, const bool
|
||||||
|
|
||||||
mNumMipLevels++;
|
mNumMipLevels++;
|
||||||
allocPixels += currWidth * currHeight * mBytesPerPixel;
|
allocPixels += currWidth * currHeight * mBytesPerPixel;
|
||||||
} while (currWidth != 1 && currHeight != 1);
|
} while (currWidth != 1 || currHeight != 1);
|
||||||
|
|
||||||
|
U32 expectedMips = mFloor(mLog2(mMax(in_width, in_height))) + 1;
|
||||||
|
AssertFatal(mNumMipLevels == expectedMips, "GBitmap::allocateBitmap: mipmap count wrong");
|
||||||
}
|
}
|
||||||
AssertFatal(mNumMipLevels <= c_maxMipLevels, "GBitmap::allocateBitmap: too many miplevels");
|
AssertFatal(mNumMipLevels <= c_maxMipLevels, "GBitmap::allocateBitmap: too many miplevels");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1085,21 +1085,7 @@ void GFXTextureManager::_validateTexParams( const U32 width, const U32 height,
|
||||||
// NOTE: Does this belong here?
|
// NOTE: Does this belong here?
|
||||||
if( inOutNumMips == 0 && !autoGenSupp )
|
if( inOutNumMips == 0 && !autoGenSupp )
|
||||||
{
|
{
|
||||||
U32 currWidth = width;
|
inOutNumMips = mFloor(mLog2(mMax(width, height))) + 1;
|
||||||
U32 currHeight = height;
|
|
||||||
|
|
||||||
inOutNumMips = 1;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
currWidth >>= 1;
|
|
||||||
currHeight >>= 1;
|
|
||||||
if( currWidth == 0 )
|
|
||||||
currWidth = 1;
|
|
||||||
if( currHeight == 0 )
|
|
||||||
currHeight = 1;
|
|
||||||
|
|
||||||
inOutNumMips++;
|
|
||||||
} while ( currWidth != 1 && currHeight != 1 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue