24 #ifndef PXR_IMAGING_GEOM_UTIL_MESH_GENERATOR_BASE_H
25 #define PXR_IMAGING_GEOM_UTIL_MESH_GENERATOR_BASE_H
36 #include <type_traits>
89 template<
typename IterType>
98 template<
typename IterType>
100 :
public std::enable_if<_IsGfVec3Iterator<IterType>::value, void>
103 template<
typename IterType>
105 :
public std::enable_if<!_IsGfVec3Iterator<IterType>::value, void>
121 template<
typename Po
intType>
124 template<
class IterType>
127 : _writeFnPtr(&
_PointWriter<PointType>::_WritePoint<IterType>)
128 , _untypedIterPtr(static_cast<
void*>(&iter))
131 template<
class IterType>
136 &
_PointWriter<PointType>::_TransformAndWritePoint<IterType>)
137 , _untypedIterPtr(static_cast<
void*>(&iter))
138 , _framePtr(framePtr)
142 const PointType& pt)
const
144 (this->*_writeFnPtr)(pt);
148 template<
class IterType>
150 const PointType& pt)
const
152 IterType& iter = *
static_cast<IterType*
>(_untypedIterPtr);
157 template<
class IterType>
158 void _TransformAndWritePoint(
159 const PointType& pt)
const
161 IterType& iter = *
static_cast<IterType*
>(_untypedIterPtr);
167 void (_PointWriter<PointType>::*)(
const PointType &)
const;
168 _WriteFnPtr _writeFnPtr;
169 void* _untypedIterPtr;
207 const size_t numRadial,
208 const size_t numQuadStrips,
211 const bool closedSweep);
219 const size_t numRadial,
220 const bool closedSweep);
231 template<
typename PointIterType,
235 PointIterType iter, ...)
238 "This function only supports iterators to GfVec3f or GfVec3d "
247 #endif // PXR_IMAGING_GEOM_UTIL_MESH_GENERATOR_BASE_H
GLsizei const GLfloat * value
GfVec3d Transform(const GfVec3d &vec) const
_PointWriter(IterType &iter, const GfMatrix4d *const framePtr)
void Write(const PointType &pt) const
typename std::iterator_traits< IterType >::value_type PointType
static PxOsdMeshTopology _GenerateCappedQuadTopology(const size_t numRadial, const size_t numQuadStrips, const _CapStyle bottomCapStyle, const _CapStyle topCapStyle, const bool closedSweep)
static void GeneratePoints(PointIterType iter,...)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
_PointWriter(IterType &iter)
static size_t _ComputeNumRadialPoints(const size_t numRadial, const bool closedSweep)