This commit is contained in:
parent
42db69e013
commit
4da1f6149a
@ -469,7 +469,7 @@ int main(int argc, char *argv[])
|
||||
openGLWidget.show();
|
||||
|
||||
//Create an empty volume and then place a sphere in it
|
||||
Volume<MaterialDensityPair44> volData(1024, 1024, 1024);
|
||||
Volume<MaterialDensityPair44> volData(256, 256, 256);
|
||||
//createSphereInVolume(volData, 30);
|
||||
createPerlinVolumeFast(volData);
|
||||
|
||||
@ -487,12 +487,12 @@ int main(int argc, char *argv[])
|
||||
}*/
|
||||
|
||||
//Extract the surface
|
||||
/*SurfaceMesh<PositionMaterialNormal> mesh;
|
||||
SurfaceMesh<PositionMaterialNormal> mesh;
|
||||
CubicSurfaceExtractorWithNormals<MaterialDensityPair44> surfaceExtractor(&volData, volData.getEnclosingRegion(), &mesh);
|
||||
surfaceExtractor.execute();
|
||||
|
||||
//Pass the surface to the OpenGL window
|
||||
openGLWidget.setSurfaceMeshToRender(mesh);*/
|
||||
openGLWidget.setSurfaceMeshToRender(mesh);
|
||||
|
||||
//Run the message pump.
|
||||
return app.exec();
|
||||
|
@ -120,7 +120,7 @@ namespace PolyVox
|
||||
|
||||
public:
|
||||
///Constructor
|
||||
Volume(uint16_t uWidth, uint16_t uHeight, uint16_t uDepth, uint16_t uBlockSideLength = 32);
|
||||
Volume(uint16_t uWidth, uint16_t uHeight, uint16_t uDepth, uint16_t uBlockSideLength = 64);
|
||||
///Destructor
|
||||
~Volume();
|
||||
|
||||
@ -152,7 +152,7 @@ namespace PolyVox
|
||||
///Sets the voxel at a 3D vector position
|
||||
bool setVoxelAt(const Vector3DUint16& v3dPos, VoxelType tValue);
|
||||
|
||||
///Resises the volume to the specified dimensions
|
||||
///Resizes the volume to the specified dimensions
|
||||
void resize(uint16_t uWidth, uint16_t uHeight, uint16_t uDepth, uint16_t uBlockSideLength = 32);
|
||||
|
||||
public:
|
||||
@ -160,8 +160,7 @@ namespace PolyVox
|
||||
|
||||
Block<VoxelType> m_pBorderBlock;
|
||||
std::vector< Block<VoxelType> > m_pBlocks;
|
||||
//mutable Block<VoxelType>* m_pUncompressedBlock;
|
||||
mutable std::set<Block<VoxelType>*> m_pUncompressedBlocks;
|
||||
mutable std::vector<Block<VoxelType>*> m_pUncompressedBlocks;
|
||||
|
||||
uint32_t m_uNoOfBlocksInVolume;
|
||||
|
||||
|
@ -344,40 +344,6 @@ namespace PolyVox
|
||||
m_fDiagonalLength = sqrtf(static_cast<float>(m_uWidth * m_uWidth + m_uHeight * m_uHeight + m_uDepth * m_uDepth));
|
||||
}
|
||||
|
||||
/*template <typename VoxelType>
|
||||
Block<VoxelType>* Volume<VoxelType>::getUncompressedBlock(Block<VoxelType>* block) const
|
||||
{
|
||||
if(block == m_pUncompressedBlock)
|
||||
{
|
||||
return m_pUncompressedBlock;
|
||||
}
|
||||
|
||||
if(m_pUncompressedBlock)
|
||||
{
|
||||
m_pUncompressedBlock->compress();
|
||||
}
|
||||
|
||||
m_pUncompressedBlock = block;
|
||||
m_pUncompressedBlock->uncompress();
|
||||
|
||||
return m_pUncompressedBlock;
|
||||
}*/
|
||||
|
||||
/*template <typename VoxelType>
|
||||
Block<VoxelType>* Volume<VoxelType>::getUncompressedBlock(Block<VoxelType>* block) const
|
||||
{
|
||||
std::set<Block<VoxelType>*>::iterator iterBlock = m_pUncompressedBlocks.find(block);
|
||||
if(iterBlock != m_pUncompressedBlocks.end())
|
||||
{
|
||||
return block;
|
||||
}
|
||||
|
||||
block->uncompress();
|
||||
m_pUncompressedBlocks.insert(block);
|
||||
|
||||
return block;
|
||||
}*/
|
||||
|
||||
template <typename VoxelType>
|
||||
Block<VoxelType>* Volume<VoxelType>::getUncompressedBlock(Block<VoxelType>* block) const
|
||||
{
|
||||
@ -391,23 +357,26 @@ namespace PolyVox
|
||||
const uint32_t MaxUncompressedBlocks = 10;
|
||||
if(m_pUncompressedBlocks.size() == MaxUncompressedBlocks)
|
||||
{
|
||||
Block<VoxelType>* pLeastRecentlyUsedBlock = 0;
|
||||
int32_t leastRecentlyUsedBlockIndex = -1;
|
||||
uint32_t uLeastRecentTimestamp = 1000000000000000;
|
||||
for(std::set<Block<VoxelType>*>::iterator iter = m_pUncompressedBlocks.begin(); iter != m_pUncompressedBlocks.end(); iter++)
|
||||
for(uint32_t ct = 0; ct < m_pUncompressedBlocks.size(); ct++)
|
||||
{
|
||||
if((*iter)->m_uTimestamp < uLeastRecentTimestamp)
|
||||
if(m_pUncompressedBlocks[ct]->m_uTimestamp < uLeastRecentTimestamp)
|
||||
{
|
||||
uLeastRecentTimestamp = (*iter)->m_uTimestamp;
|
||||
pLeastRecentlyUsedBlock = *iter;
|
||||
uLeastRecentTimestamp = m_pUncompressedBlocks[ct]->m_uTimestamp;
|
||||
leastRecentlyUsedBlockIndex = ct;
|
||||
}
|
||||
}
|
||||
|
||||
pLeastRecentlyUsedBlock->compress();
|
||||
m_pUncompressedBlocks.erase(pLeastRecentlyUsedBlock);
|
||||
m_pUncompressedBlocks[leastRecentlyUsedBlockIndex]->compress();
|
||||
m_pUncompressedBlocks[leastRecentlyUsedBlockIndex] = block;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pUncompressedBlocks.push_back(block);
|
||||
}
|
||||
|
||||
block->uncompress();
|
||||
m_pUncompressedBlocks.insert(block);
|
||||
|
||||
return block;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user