Fixed crash with MaxVerticesPerPosition being set too low.
This commit is contained in:
parent
8ad0cae89a
commit
8d2061bdb5
@ -26,13 +26,12 @@ namespace PolyVox
|
|||||||
// We try to avoid duplicate vertices by checking whether a vertex has already been added at a given position.
|
// We try to avoid duplicate vertices by checking whether a vertex has already been added at a given position.
|
||||||
// However, it is possible that vertices have the same position but different materials. In this case, the
|
// However, it is possible that vertices have the same position but different materials. In this case, the
|
||||||
// vertices are not true duplicates and both must be added to the mesh. As far as I can tell, it is possible to have
|
// vertices are not true duplicates and both must be added to the mesh. As far as I can tell, it is possible to have
|
||||||
// at most six vertices with the same position but different materials. This worst-case scenario happens when we
|
// at most eight vertices with the same position but different materials. For example, this worst-case scenario
|
||||||
// have a 2x2x2 group of voxels (all with different materials) and then we delete two voxels from opposing corners.
|
// happens when we have a 2x2x2 group of voxels, all with different materials and some/all partially transparent.
|
||||||
// The vertex position at the center of this group is then going to be used by six quads all with different materials.
|
// The vertex position at the center of this group is then going to be used by all eight voxels all with different
|
||||||
// One futher note - we can actually have eight quads sharing a vertex position (imagine two 1x1x10 rows of voxels
|
// materials.
|
||||||
// sharing a common edge) but in this case all eight quads will not have different materials.
|
|
||||||
template<typename VolumeType, typename IsQuadNeeded>
|
template<typename VolumeType, typename IsQuadNeeded>
|
||||||
const uint32_t CubicSurfaceExtractor<VolumeType, IsQuadNeeded>::MaxVerticesPerPosition = 6;
|
const uint32_t CubicSurfaceExtractor<VolumeType, IsQuadNeeded>::MaxVerticesPerPosition = 8;
|
||||||
|
|
||||||
template<typename VolumeType, typename IsQuadNeeded>
|
template<typename VolumeType, typename IsQuadNeeded>
|
||||||
CubicSurfaceExtractor<VolumeType, IsQuadNeeded>::CubicSurfaceExtractor(VolumeType* volData, Region region, SurfaceMesh<PositionMaterial>* result, WrapMode eWrapMode, typename VolumeType::VoxelType tBorderValue, bool bMergeQuads, IsQuadNeeded isQuadNeeded)
|
CubicSurfaceExtractor<VolumeType, IsQuadNeeded>::CubicSurfaceExtractor(VolumeType* volData, Region region, SurfaceMesh<PositionMaterial>* result, WrapMode eWrapMode, typename VolumeType::VoxelType tBorderValue, bool bMergeQuads, IsQuadNeeded isQuadNeeded)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user