Added handy type aliases for meshes.

This commit is contained in:
David Williams
2014-08-18 16:01:31 +02:00
parent be47aec7f7
commit 5e7c4fbc12
4 changed files with 18 additions and 11 deletions

View File

@ -53,6 +53,10 @@ namespace PolyVox
DataType data;
};
// Convienient shorthand for declaring a mesh of 'cubic' vertices
template <typename VertexDataType, typename IndexType = DefaultIndexType>
using CubicMesh = Mesh< CubicVertex<VertexDataType>, IndexType >;
/// Decodes a position from a CubicVertex
inline Vector3DFloat decodePosition(const Vector3DUint8& encodedPosition)
{
@ -196,9 +200,9 @@ namespace PolyVox
}
template<typename VolumeType, typename IsQuadNeeded = DefaultIsQuadNeeded<typename VolumeType::VoxelType> >
Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, IsQuadNeeded isQuadNeeded = IsQuadNeeded(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true)
CubicMesh<typename VolumeType::VoxelType> extractCubicMesh(VolumeType* volData, Region region, IsQuadNeeded isQuadNeeded = IsQuadNeeded(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true)
{
Mesh< CubicVertex<typename VolumeType::VoxelType> > result;
CubicMesh<typename VolumeType::VoxelType> result;
extractCubicMeshCustom(volData, region, &result, isQuadNeeded, eWrapMode, tBorderValue, bMergeQuads);
return result;
}

View File

@ -55,6 +55,10 @@ namespace PolyVox
DataType data;
};
// Convienient shorthand for declaring a mesh of marching cubes vertices
template <typename VertexDataType, typename IndexType = DefaultIndexType>
using MarchingCubesMesh = Mesh< MarchingCubesVertex<VertexDataType>, IndexType >;
/// Decodes a position from a MarchingCubesVertex
inline Vector3DFloat decodePosition(const Vector3DUint16& encodedPosition)
{
@ -339,10 +343,10 @@ namespace PolyVox
}
template< typename VolumeType, typename ControllerType = DefaultMarchingCubesController<typename VolumeType::VoxelType> >
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > extractMarchingCubesMesh(VolumeType* volData, Region region, ControllerType controller = ControllerType(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType())
MarchingCubesMesh<typename VolumeType::VoxelType> extractMarchingCubesMesh(VolumeType* volData, Region region, ControllerType controller = ControllerType(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType())
{
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > result;
extractMarchingCubesMeshCustom<VolumeType, Mesh<MarchingCubesVertex<typename VolumeType::VoxelType>, DefaultIndexType > >(volData, region, &result, controller, eWrapMode, tBorderValue);
MarchingCubesMesh<typename VolumeType::VoxelType> result;
extractMarchingCubesMeshCustom(volData, region, &result, controller, eWrapMode, tBorderValue);
return result;
}
}