Home | History | Annotate | Download | only in Renderer

Lines Matching refs:polygon

17 #include "Polygon.hpp"
43 bool Clipper::clip(Polygon &polygon, int clipFlagsOr, const DrawCall &draw)
47 if(clipFlagsOr & CLIP_NEAR) clipNear(polygon);
48 if(polygon.n >= 3) {
49 if(clipFlagsOr & CLIP_FAR) clipFar(polygon);
50 if(polygon.n >= 3) {
51 if(clipFlagsOr & CLIP_LEFT) clipLeft(polygon);
52 if(polygon.n >= 3) {
53 if(clipFlagsOr & CLIP_RIGHT) clipRight(polygon);
54 if(polygon.n >= 3) {
55 if(clipFlagsOr & CLIP_TOP) clipTop(polygon);
56 if(polygon.n >= 3) {
57 if(clipFlagsOr & CLIP_BOTTOM) clipBottom(polygon);
66 if(polygon.n >= 3) {
67 if(clipFlags & CLIP_PLANE0) clipPlane(polygon, data.clipPlane[0]);
68 if(polygon.n >= 3) {
69 if(clipFlags & CLIP_PLANE1) clipPlane(polygon, data.clipPlane[1]);
70 if(polygon.n >= 3) {
71 if(clipFlags & CLIP_PLANE2) clipPlane(polygon, data.clipPlane[2]);
72 if(polygon.n >= 3) {
73 if(clipFlags & CLIP_PLANE3) clipPlane(polygon, data.clipPlane[3]);
74 if(polygon.n >= 3) {
75 if(clipFlags & CLIP_PLANE4) clipPlane(polygon, data.clipPlane[4]);
76 if(polygon.n >= 3) {
77 if(clipFlags & CLIP_PLANE5) clipPlane(polygon, data.clipPlane[5]);
81 return polygon.n >= 3;
84 void Clipper::clipNear(Polygon &polygon)
86 const float4 **V = polygon.P[polygon.i];
87 const float4 **T = polygon.P[polygon.i + 1];
91 for(int i = 0; i < polygon.n; i++)
93 int j = i == polygon.n - 1 ? 0 : i + 1;
104 clipEdge(polygon.B[polygon.b], *V[i], *V[j], di, dj);
105 T[t++] = &polygon.B[polygon.b++];
112 clipEdge(polygon.B[polygon.b], *V[j], *V[i], dj, di);
113 T[t++] = &polygon.B[polygon.b++];
118 polygon.n = t;
119 polygon.i += 1;
122 void Clipper::clipFar(Polygon &polygon)
124 const float4 **V = polygon.P[polygon.i];
125 const float4 **T = polygon.P[polygon.i + 1];
129 for(int i = 0; i < polygon.n; i++)
131 int j = i == polygon.n - 1 ? 0 : i + 1;
142 clipEdge(polygon.B[polygon.b], *V[i], *V[j], di, dj);
143 T[t++] = &polygon.B[polygon.b++];
150 clipEdge(polygon.B[polygon.b], *V[j], *V[i], dj, di);
151 T[t++] = &polygon.B[polygon.b++];
156 polygon.n = t;
157 polygon.i += 1;
160 void Clipper::clipLeft(Polygon &polygon)
162 const float4 **V = polygon.P[polygon.i];
163 const float4 **T = polygon.P[polygon.i + 1];
167 for(int i = 0; i < polygon.n; i++)
169 int j = i == polygon.n - 1 ? 0 : i + 1;
180 clipEdge(polygon.B[polygon.b], *V[i], *V[j], di, dj);
181 T[t++] = &polygon.B[polygon.b++];
188 clipEdge(polygon.B[polygon.b], *V[j], *V[i], dj, di);
189 T[t++] = &polygon.B[polygon.b++];
194 polygon.n = t;
195 polygon.i += 1;
198 void Clipper::clipRight(Polygon &polygon)
200 const float4 **V = polygon.P[polygon.i];
201 const float4 **T = polygon.P[polygon.i + 1];
205 for(int i = 0; i < polygon.n; i++)
207 int j = i == polygon.n - 1 ? 0 : i + 1;
218 clipEdge(polygon.B[polygon.b], *V[i], *V[j], di, dj);
219 T[t++] = &polygon.B[polygon.b++];
226 clipEdge(polygon.B[polygon.b], *V[j], *V[i], dj, di);
227 T[t++] = &polygon.B[polygon.b++];
232 polygon.n = t;
233 polygon.i += 1;
236 void Clipper::clipTop(Polygon &polygon)
238 const float4 **V = polygon.P[polygon.i];
239 const float4 **T = polygon.P[polygon.i + 1];
243 for(int i = 0; i < polygon.n; i++)
245 int j = i == polygon.n - 1 ? 0 : i + 1;
256 clipEdge(polygon.B[polygon.b], *V[i], *V[j], di, dj);
257 T[t++] = &polygon.B[polygon.b++];
264 clipEdge(polygon.B[polygon.b], *V[j], *V[i], dj, di);
265 T[t++] = &polygon.B[polygon.b++];
270 polygon.n = t;
271 polygon.i += 1;
274 void Clipper::clipBottom(Polygon &polygon)
276 const float4 **V = polygon.P[polygon.i];
277 const float4 **T = polygon.P[polygon.i + 1];
281 for(int i = 0; i < polygon.n; i++)
283 int j = i == polygon.n - 1 ? 0 : i + 1;
294 clipEdge(polygon.B[polygon.b], *V[i], *V[j], di, dj);
295 T[t++] = &polygon.B[polygon.b++];
302 clipEdge(polygon.B[polygon.b], *V[j], *V[i], dj, di);
303 T[t++] = &polygon.B[polygon.b++];
308 polygon.n = t;
309 polygon.i += 1;
312 void Clipper::clipPlane(Polygon &polygon, const Plane &p)
314 const float4 **V = polygon.P[polygon.i];
315 const float4 **T = polygon.P[polygon.i + 1];
319 for(int i = 0; i < polygon.n; i++)
321 int j = i == polygon.n - 1 ? 0 : i + 1;
332 clipEdge(polygon.B[polygon.b], *V[i], *V[j], di, dj);
333 T[t++] = &polygon.B[polygon.b++];
340 clipEdge(polygon.B[polygon.b], *V[j], *V[i], dj, di);
341 T[t++] = &polygon.B[polygon.b++];
346 polygon.n = t;
347 polygon.i += 1;