11 #include <mm_malloc.h>
14 #include <mm_malloc.h>
19#include <imt3d/IObject3d.h>
44 PF_XYZW_NORMAL_CURVATURE_32,
45 PF_XYZW_NORMAL_RGBA_32,
50 I_DECLARE_ENUM(PointFormat, PF_XYZ_32, PF_XYZ_64, PF_XYZ_ABC_32, PF_XYZW_32, PF_XYZW_NORMAL_CURVATURE_32, PF_XYZW_NORMAL_RGBA_32, PF_XYZW_RGBA_32, PF_UNDEFINED);
54#pragma warning(disable : 4324)
56 template <
typename CoordinateType,
int AlignSize,
int ... InitValues>
57 struct alignas(AlignSize) Point
59 CoordinateType data[
sizeof...(InitValues)] = { InitValues... };
61 void*
operator new(
size_t size){
return _mm_malloc(size, AlignSize); }
62 void *
operator new[](
size_t size){
return _mm_malloc(size, AlignSize); }
63 void operator delete(
void* ptr){ _mm_free(ptr); }
64 void operator delete[](
void* ptr){ _mm_free(ptr); }
70 typedef Point<float, 16, 0, 0, 0> PointXyz32;
71 typedef Point<double, 32, 0, 0, 0> PointXyz64;
72 typedef Point<float, 16, 0, 0, 0, 0, 0, 0> PointXyzAbc32;
73 typedef Point<float, 16, 0, 0, 0, 1> PointXyzw32;
74 typedef Point<float, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0> PointXyzwNormal32;
75 typedef Point<float, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0> PointXyzwNormalRgba32;
76 typedef Point<float, 16, 0, 0, 0, 1, 0, 1, 0, 1> PointXyzwRgba32;
virtual PointFormat GetPointFormat() const =0
virtual const void * GetPointData(int pointIndex) const =0
virtual void * GetData()=0
virtual int GetPointsCount() const =0
virtual int GetPointBytesSize() const =0
virtual void * GetPointData(int pointIndex)=0
virtual const void * GetData() const =0