- Fixed mipmaps rendering in Burning's driver.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@5318 dfc29bdd-3216-0410-991c-e03cc46cb475
master
nadro 2016-07-09 13:38:33 +00:00
parent 413316708c
commit a101d17d06
2 changed files with 9 additions and 3 deletions

View File

@ -38,11 +38,11 @@ public:
virtual ~CSoftwareTexture2();
//! lock function
virtual void* lock(E_TEXTURE_LOCK_MODE mode = ETLM_READ_WRITE, u32 layer = 0) _IRR_OVERRIDE_
virtual void* lock(E_TEXTURE_LOCK_MODE mode, u32 level, u32 layer)
{
if (Flags & GEN_MIPMAP)
{
MipMapLOD = 0;
MipMapLOD = level;
Size = MipMap[MipMapLOD]->getDimension();
Pitch = MipMap[MipMapLOD]->getPitch();
}
@ -50,6 +50,12 @@ public:
return MipMap[MipMapLOD]->getData();
}
//! lock function
virtual void* lock(E_TEXTURE_LOCK_MODE mode = ETLM_READ_WRITE, u32 layer = 0) _IRR_OVERRIDE_
{
return lock(mode, 0, layer);
}
//! unlock function
virtual void unlock() _IRR_OVERRIDE_
{

View File

@ -101,7 +101,7 @@ namespace video
//SOFTWARE_DRIVER_2_MIPMAPPING_LOD_BIAS
it->lodLevel = lodLevel;
it->data = (tVideoSample*) it->Texture->lock(ETLM_READ_ONLY,
core::s32_clamp ( lodLevel + SOFTWARE_DRIVER_2_MIPMAPPING_LOD_BIAS, 0, SOFTWARE_DRIVER_2_MIPMAPPING_MAX - 1 ));
core::s32_clamp ( lodLevel + SOFTWARE_DRIVER_2_MIPMAPPING_LOD_BIAS, 0, SOFTWARE_DRIVER_2_MIPMAPPING_MAX - 1 ), 0);
// prepare for optimal fixpoint
it->pitchlog2 = s32_log2_s32 ( it->Texture->getPitch() );