Eliminating some differences from the cubiquity-version branch.

This commit is contained in:
Daviw Williams
2014-02-25 16:51:26 +01:00
parent 0e8973e722
commit 2458f94feb
4 changed files with 19 additions and 2 deletions

View File

@ -37,6 +37,7 @@ namespace PolyVox
int32_t roundToInteger(float r);
template <typename Type>
Type clamp(const Type& value, const Type& low, const Type& high);
uint32_t upperPowerOfTwo(uint32_t v);
inline int32_t roundTowardsNegInf(float r)
{

View File

@ -365,7 +365,7 @@ namespace PolyVox
void SurfaceMesh<VertexType>::removeUnusedVertices(void)
{
std::vector<bool> isVertexUsed(m_vecVertices.size());
fill(isVertexUsed.begin(), isVertexUsed.end(), false);
std::fill(isVertexUsed.begin(), isVertexUsed.end(), false);
for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++)
{

View File

@ -653,7 +653,10 @@ namespace PolyVox
inline void Vector<Size, StorageType, OperationType>::normalise(void)
{
float fLength = this->length();
if(fLength <= 0.0)
// We could wait until the NAN occurs before throwing, but then we'd have to add some roll-back code.
// This seems like a lot of overhead for a common operation which should rarely go wrong.
if(fLength <= 0.0001)
{
POLYVOX_THROW(invalid_operation, "Cannot normalise a vector with a length of zero");
}

View File

@ -56,4 +56,17 @@ namespace PolyVox
else
return ((uInput & (uInput-1)) == 0);
}
// http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
uint32_t upperPowerOfTwo(uint32_t v)
{
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
v++;
return v;
}
}