Added compatibility mode.

This commit is contained in:
David Williams 2011-02-14 22:14:41 +00:00
parent 03a713867f
commit 3c34d401fc
3 changed files with 20 additions and 1 deletions

View File

@ -511,11 +511,12 @@ int main(int argc, char *argv[])
//Create an empty volume and then place a sphere in it
Volume<MaterialDensityPair44> volData(256, 256, 256);
volData.useCompatibilityMode();
//createSphereInVolume(volData, 30);
createPerlinTerrain(volData);
//createPerlinVolumeSlow(volData);
std::cout << "Memory usage: " << volData.calculateSizeInBytes() << std::endl;
volData.setBlockCacheSize(8);
//volData.setBlockCacheSize(8);
std::cout << "Memory usage: " << volData.calculateSizeInBytes() << std::endl;
std::cout << "Compression ratio: " << volData.calculateCompressionRatio() << std::endl;

View File

@ -159,6 +159,7 @@ namespace PolyVox
void clearBlockCache(void);
float calculateCompressionRatio(void);
uint32_t calculateSizeInBytes(void);
void useCompatibilityMode(void);
/// Resizes the volume to the specified dimensions
void resize(uint16_t uWidth, uint16_t uHeight, uint16_t uDepth, uint16_t uBlockSideLength = 32);

View File

@ -463,4 +463,21 @@ namespace PolyVox
return uSizeInBytes;
}
template <typename VoxelType>
void Volume<VoxelType>::useCompatibilityMode(void)
{
setBlockCacheSize(m_uNoOfBlocksInVolume * 2); //Times two gives space to spare
for(uint32_t z = 0; z < m_uDepthInBlocks; z++)
{
for(uint32_t y = 0; y < m_uHeightInBlocks; y++)
{
for(uint32_t x = 0; x < m_uWidthInBlocks; x++)
{
getUncompressedBlock(x,y,z);
}
}
}
}
}