1#include "QuadSetToTriangleSet.h"
5 IMPLEMENT_TCLASS(QuadSetToTriangleSet, TDataType)
7 template<typename TDataType>
8 QuadSetToTriangleSet<TDataType>::QuadSetToTriangleSet()
13 template<typename Triangle, typename Quad>
14 __global__ void Q2T_SetupTriangles(
15 DArray<Triangle> triangles,
18 int tId = threadIdx.x + (blockIdx.x * blockDim.x);
19 if (tId >= quads.size()) return;
21 Quad quad = quads[tId];
22 triangles[2 * tId] = Triangle(quad[0], quad[1], quad[2]);
23 triangles[2 * tId + 1] = Triangle(quad[0], quad[2], quad[3]);
26 template<typename TDataType>
27 bool QuadSetToTriangleSet<TDataType>::apply()
29 if (this->outTriangleSet()->isEmpty()) {
30 this->outTriangleSet()->allocate();
33 auto qs = this->inQuadSet()->constDataPtr();
34 auto ts = this->outTriangleSet()->getDataPtr();
36 auto& verts = qs->getPoints();
37 auto& quads = qs->getQuads();
39 auto& tris = ts->getTriangles();
40 tris.resize(2 * quads.size());
44 cuExecute(quads.size(),
49 this->outTriangleSet()->update();
54 DEFINE_CLASS(QuadSetToTriangleSet);