Added functions around CubicSurfaceExtractor.
This commit is contained in:
		| @@ -157,6 +157,28 @@ namespace PolyVox | |||||||
| 		WrapMode m_eWrapMode; | 		WrapMode m_eWrapMode; | ||||||
| 		typename VolumeType::VoxelType m_tBorderValue; | 		typename VolumeType::VoxelType m_tBorderValue; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | 	template<typename VolumeType, typename IsQuadNeeded> | ||||||
|  | 	SurfaceMesh<PositionMaterial> extractCubicSurface(VolumeType* volData, Region region, WrapMode eWrapMode, typename VolumeType::VoxelType tBorderValue, bool bMergeQuads, IsQuadNeeded isQuadNeeded) | ||||||
|  | 	{ | ||||||
|  | 		SurfaceMesh<PositionMaterial> result; | ||||||
|  | 		CubicSurfaceExtractor<VolumeType, IsQuadNeeded> extractor(volData, region, &result, eWrapMode, tBorderValue, bMergeQuads, isQuadNeeded); | ||||||
|  | 		extractor.execute(); | ||||||
|  | 		return result; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	template<typename VolumeType> | ||||||
|  | 	// This is a bit ugly - it seems that the C++03 syntax is different from the C++11 syntax? See this thread: http://stackoverflow.com/questions/6076015/typename-outside-of-template | ||||||
|  | 	// Long term we should probably come back to this and if the #ifdef is still needed then maybe it should check for C++11 mode instead of MSVC?  | ||||||
|  | #if defined(_MSC_VER) | ||||||
|  | 	SurfaceMesh<PositionMaterial> extractCubicSurface(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = VolumeType::VoxelType(), bool bMergeQuads = true) | ||||||
|  | #else | ||||||
|  | 	SurfaceMesh<PositionMaterial> extractCubicSurface(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true) | ||||||
|  | #endif | ||||||
|  | 	{ | ||||||
|  | 		DefaultIsQuadNeeded<typename VolumeType::VoxelType> isQuadNeeded; | ||||||
|  | 		return extractCubicSurface<VolumeType, DefaultIsQuadNeeded<typename VolumeType::VoxelType> >(volData, region, eWrapMode, tBorderValue, bMergeQuads, isQuadNeeded); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| #include "PolyVoxCore/CubicSurfaceExtractor.inl" | #include "PolyVoxCore/CubicSurfaceExtractor.inl" | ||||||
|   | |||||||
| @@ -106,10 +106,9 @@ uint32_t testForType(void) | |||||||
| 		{ | 		{ | ||||||
| 			for (int32_t x = 0; x < uVolumeSideLength; x += uRegionSideLength) | 			for (int32_t x = 0; x < uVolumeSideLength; x += uRegionSideLength) | ||||||
| 			{ | 			{ | ||||||
| 				SurfaceMesh<PositionMaterial> result; |  | ||||||
| 				Region regionToExtract(x, y, z, x + uRegionSideLength - 1, y + uRegionSideLength - 1, z + uRegionSideLength - 1); | 				Region regionToExtract(x, y, z, x + uRegionSideLength - 1, y + uRegionSideLength - 1, z + uRegionSideLength - 1); | ||||||
| 				CubicSurfaceExtractor< SimpleVolume<VoxelType> > extractor(&volData, regionToExtract, &result); |  | ||||||
| 				extractor.execute(); | 				auto result = extractCubicSurface(&volData, regionToExtract); | ||||||
|  |  | ||||||
| 				uTotalVertices += result.getNoOfVertices(); | 				uTotalVertices += result.getNoOfVertices(); | ||||||
| 				uTotalIndices += result.getNoOfIndices(); | 				uTotalIndices += result.getNoOfIndices(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user