g4tools  5.4.0
glprims
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_glprims
5 #define tools_glprims
6 
7 //same as OpenGL GL_[POINTS,etc...], but for the case we don't have OpenGL.
8 
9 #include <cstddef> //size_t
10 
11 namespace tools {
12 namespace gl {
13 
14 typedef unsigned char mode_t;
15 
16 inline mode_t points() {return 0x0000;}
17 inline mode_t lines() {return 0x0001;} //segments
18 inline mode_t line_loop() {return 0x0002;}
19 inline mode_t line_strip() {return 0x0003;} //polyline
20 inline mode_t triangles() {return 0x0004;}
21 inline mode_t triangle_strip() {return 0x0005;}
22 inline mode_t triangle_fan() {return 0x0006;}
23 //inline mode_t quads() {return 0x0007;}
24 //inline mode_t quad_strip() {return 0x0008;}
25 //inline mode_t polygon() {return 0x0009;}
26 
27 inline bool is_mode(mode_t a_mode) {
28  return a_mode<=0x006?true:false;
29 }
30 
31 inline bool is_line(mode_t a_mode) {
32  if(a_mode==points()) return true; //0 sz line !
33  if(a_mode==lines()) return true;
34  if(a_mode==line_loop()) return true;
35  if(a_mode==line_strip()) return true;
36  return false;
37 }
38 
39 inline void cvt_2to3(size_t a_npt,const float* a_xys,float*& a_xyzs) {
40  const float* vpos = a_xys;
41  float x,y;
42  for(size_t i=0;i<a_npt;i++) {
43  x = *vpos;vpos++;
44  y = *vpos;vpos++;
45  *a_xyzs = x;a_xyzs++;
46  *a_xyzs = y;a_xyzs++;
47  *a_xyzs = 0;a_xyzs++;
48  }
49 }
50 
51 
52 inline void triangle_fan_to_triangles(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
53  // a_pxyzs = (a_npt-2)*3*3
54 
55  const float* vpos = a_xyzs;
56 
57  float x1 = *vpos;vpos++;
58  float y1 = *vpos;vpos++;
59  float z1 = *vpos;vpos++;
60 
61  float x2 = *vpos;vpos++;
62  float y2 = *vpos;vpos++;
63  float z2 = *vpos;vpos++;
64 
65  float x3,y3,z3;
66  for(size_t i=2;i<a_npt;i++) {
67  x3 = *vpos;vpos++;
68  y3 = *vpos;vpos++;
69  z3 = *vpos;vpos++;
70  *a_pxyzs = x1;a_pxyzs++;
71  *a_pxyzs = y1;a_pxyzs++;
72  *a_pxyzs = z1;a_pxyzs++;
73 
74  *a_pxyzs = x2;a_pxyzs++;
75  *a_pxyzs = y2;a_pxyzs++;
76  *a_pxyzs = z2;a_pxyzs++;
77 
78  *a_pxyzs = x3;a_pxyzs++;
79  *a_pxyzs = y3;a_pxyzs++;
80  *a_pxyzs = z3;a_pxyzs++;
81 
82  x2 = x3;
83  y2 = y3;
84  z2 = z3;
85  }
86 
87 }
88 
89 inline void triangle_fan_to_triangles_texture(size_t a_npt,const float* a_xyzs,const float* a_tcs,float*& a_pxyzs,float*& a_ptcs) {
90  // a_pxyzs = (a_npt-2)*3*3
91 
92  // a_ptcs = (a_npt-2)*3*2
93 
94  const float* vpos = a_xyzs;
95  const float* tpos = a_tcs;
96 
97  float x1 = *vpos;vpos++;
98  float y1 = *vpos;vpos++;
99  float z1 = *vpos;vpos++;
100 
101  float tx1 = *tpos;tpos++;
102  float ty1 = *tpos;tpos++;
103 
104  float x2 = *vpos;vpos++;
105  float y2 = *vpos;vpos++;
106  float z2 = *vpos;vpos++;
107 
108  float tx2 = *tpos;tpos++;
109  float ty2 = *tpos;tpos++;
110 
111  float x3,y3,z3,tx3,ty3;
112  for(size_t i=2;i<a_npt;i++) {
113  x3 = *vpos;vpos++;
114  y3 = *vpos;vpos++;
115  z3 = *vpos;vpos++;
116 
117  tx3 = *tpos;tpos++;
118  ty3 = *tpos;tpos++;
119 
120  *a_pxyzs = x1;a_pxyzs++;
121  *a_pxyzs = y1;a_pxyzs++;
122  *a_pxyzs = z1;a_pxyzs++;
123 
124  *a_ptcs = tx1;a_ptcs++;
125  *a_ptcs = ty1;a_ptcs++;
126 
127  *a_pxyzs = x2;a_pxyzs++;
128  *a_pxyzs = y2;a_pxyzs++;
129  *a_pxyzs = z2;a_pxyzs++;
130 
131  *a_ptcs = tx2;a_ptcs++;
132  *a_ptcs = ty2;a_ptcs++;
133 
134  *a_pxyzs = x3;a_pxyzs++;
135  *a_pxyzs = y3;a_pxyzs++;
136  *a_pxyzs = z3;a_pxyzs++;
137 
138  *a_ptcs = tx3;a_ptcs++;
139  *a_ptcs = ty3;a_ptcs++;
140 
141  x2 = x3;
142  y2 = y3;
143  z2 = z3;
144 
145  tx2 = tx3;
146  ty2 = ty3;
147  }
148 
149 }
150 
151 inline void triangle_strip_to_triangles(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
152  // a_pxyzs = (a_npt-2)*3*3
153 
154  const float* vpos = a_xyzs;
155 
156  float x1 = *vpos;vpos++;
157  float y1 = *vpos;vpos++;
158  float z1 = *vpos;vpos++;
159 
160  float x2 = *vpos;vpos++;
161  float y2 = *vpos;vpos++;
162  float z2 = *vpos;vpos++;
163 
164  float x3,y3,z3;
165  bool flip = false;
166  for(size_t i=2;i<a_npt;i++) {
167  x3 = *vpos;vpos++;
168  y3 = *vpos;vpos++;
169  z3 = *vpos;vpos++;
170 
171  if(flip) {
172  *a_pxyzs = x1;a_pxyzs++;
173  *a_pxyzs = y1;a_pxyzs++;
174  *a_pxyzs = z1;a_pxyzs++;
175 
176  *a_pxyzs = x3;a_pxyzs++;
177  *a_pxyzs = y3;a_pxyzs++;
178  *a_pxyzs = z3;a_pxyzs++;
179 
180  *a_pxyzs = x2;a_pxyzs++;
181  *a_pxyzs = y2;a_pxyzs++;
182  *a_pxyzs = z2;a_pxyzs++;
183  } else {
184  *a_pxyzs = x1;a_pxyzs++;
185  *a_pxyzs = y1;a_pxyzs++;
186  *a_pxyzs = z1;a_pxyzs++;
187 
188  *a_pxyzs = x2;a_pxyzs++;
189  *a_pxyzs = y2;a_pxyzs++;
190  *a_pxyzs = z2;a_pxyzs++;
191 
192  *a_pxyzs = x3;a_pxyzs++;
193  *a_pxyzs = y3;a_pxyzs++;
194  *a_pxyzs = z3;a_pxyzs++;
195  }
196 
197  x1 = x2;
198  y1 = y2;
199  z1 = z2;
200 
201  x2 = x3;
202  y2 = y3;
203  z2 = z3;
204 
205  flip = flip?false:true;
206  }
207 }
208 
209 inline void triangle_strip_to_triangles_texture(size_t a_npt,const float* a_xyzs,const float* a_tcs,float*& a_pxyzs,float*& a_ptcs) {
210  // a_pxyzs = (a_npt-2)*3*3
211  // a_ptcs = (a_npt-2)*3*2
212 
213  const float* vpos = a_xyzs;
214  const float* tpos = a_tcs;
215 
216  float x1 = *vpos;vpos++;
217  float y1 = *vpos;vpos++;
218  float z1 = *vpos;vpos++;
219 
220  float tx1 = *tpos;tpos++;
221  float ty1 = *tpos;tpos++;
222 
223  float x2 = *vpos;vpos++;
224  float y2 = *vpos;vpos++;
225  float z2 = *vpos;vpos++;
226 
227  float tx2 = *tpos;tpos++;
228  float ty2 = *tpos;tpos++;
229 
230  float x3,y3,z3,tx3,ty3;
231  bool flip = false;
232  for(size_t i=2;i<a_npt;i++) {
233  x3 = *vpos;vpos++;
234  y3 = *vpos;vpos++;
235  z3 = *vpos;vpos++;
236 
237  tx3 = *tpos;tpos++;
238  ty3 = *tpos;tpos++;
239 
240  if(flip) {
241  *a_pxyzs = x1;a_pxyzs++;
242  *a_pxyzs = y1;a_pxyzs++;
243  *a_pxyzs = z1;a_pxyzs++;
244 
245  *a_ptcs = tx1;a_ptcs++;
246  *a_ptcs = ty1;a_ptcs++;
247 
248  *a_pxyzs = x3;a_pxyzs++;
249  *a_pxyzs = y3;a_pxyzs++;
250  *a_pxyzs = z3;a_pxyzs++;
251 
252  *a_ptcs = tx3;a_ptcs++;
253  *a_ptcs = ty3;a_ptcs++;
254 
255  *a_pxyzs = x2;a_pxyzs++;
256  *a_pxyzs = y2;a_pxyzs++;
257  *a_pxyzs = z2;a_pxyzs++;
258 
259  *a_ptcs = tx2;a_ptcs++;
260  *a_ptcs = ty2;a_ptcs++;
261  } else {
262  *a_pxyzs = x1;a_pxyzs++;
263  *a_pxyzs = y1;a_pxyzs++;
264  *a_pxyzs = z1;a_pxyzs++;
265 
266  *a_ptcs = tx1;a_ptcs++;
267  *a_ptcs = ty1;a_ptcs++;
268 
269  *a_pxyzs = x2;a_pxyzs++;
270  *a_pxyzs = y2;a_pxyzs++;
271  *a_pxyzs = z2;a_pxyzs++;
272 
273  *a_ptcs = tx2;a_ptcs++;
274  *a_ptcs = ty2;a_ptcs++;
275 
276  *a_pxyzs = x3;a_pxyzs++;
277  *a_pxyzs = y3;a_pxyzs++;
278  *a_pxyzs = z3;a_pxyzs++;
279 
280  *a_ptcs = tx3;a_ptcs++;
281  *a_ptcs = ty3;a_ptcs++;
282  }
283 
284  x1 = x2;
285  y1 = y2;
286  z1 = z2;
287 
288  tx1 = tx2;
289  ty1 = ty2;
290 
291  x2 = x3;
292  y2 = y3;
293  z2 = z3;
294 
295  tx2 = tx3;
296  ty2 = ty3;
297 
298  flip = flip?false:true;
299  }
300 }
301 
302 inline void triangle_fan_to_triangles_nms(size_t a_npt,const float* a_xyzs,const float* a_nms,float*& a_pxyzs,float*& a_pnms) {
303  triangle_fan_to_triangles(a_npt,a_xyzs,a_pxyzs);
304  triangle_fan_to_triangles(a_npt,a_nms,a_pnms);
305 }
306 
307 inline void triangle_strip_to_triangles_nms(size_t a_npt,const float* a_xyzs,const float* a_nms,float*& a_pxyzs,float*& a_pnms) {
308  // a_pxyzs, a_pnms = (a_npt-2)*3*3
309  triangle_strip_to_triangles(a_npt,a_xyzs,a_pxyzs);
310  triangle_strip_to_triangles(a_npt,a_nms,a_pnms);
311 }
312 
313 inline void triangle_fan_to_triangles_2to3(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
314 
315  const float* vpos = a_xyzs;
316 
317  float x1 = *vpos;vpos++;
318  float y1 = *vpos;vpos++;
319 
320  float x2 = *vpos;vpos++;
321  float y2 = *vpos;vpos++;
322 
323  float x3,y3;
324  for(size_t i=2;i<a_npt;i++) {
325  x3 = *vpos;vpos++;
326  y3 = *vpos;vpos++;
327 
328  *a_pxyzs = x1;a_pxyzs++;
329  *a_pxyzs = y1;a_pxyzs++;
330  *a_pxyzs = 0;a_pxyzs++;
331 
332  *a_pxyzs = x2;a_pxyzs++;
333  *a_pxyzs = y2;a_pxyzs++;
334  *a_pxyzs = 0;a_pxyzs++;
335 
336  *a_pxyzs = x3;a_pxyzs++;
337  *a_pxyzs = y3;a_pxyzs++;
338  *a_pxyzs = 0;a_pxyzs++;
339 
340  x2 = x3;
341  y2 = y3;
342  }
343 
344 }
345 
346 inline void triangle_strip_to_triangles_2to3(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
347 
348  const float* vpos = a_xyzs;
349 
350  float x1 = *vpos;vpos++;
351  float y1 = *vpos;vpos++;
352 
353  float x2 = *vpos;vpos++;
354  float y2 = *vpos;vpos++;
355 
356  float x3,y3;
357  bool flip = false;
358  for(size_t i=2;i<a_npt;i++) {
359  x3 = *vpos;vpos++;
360  y3 = *vpos;vpos++;
361 
362  if(flip) {
363  *a_pxyzs = x1;a_pxyzs++;
364  *a_pxyzs = y1;a_pxyzs++;
365  *a_pxyzs = 0;a_pxyzs++;
366 
367  *a_pxyzs = x3;a_pxyzs++;
368  *a_pxyzs = y3;a_pxyzs++;
369  *a_pxyzs = 0;a_pxyzs++;
370 
371  *a_pxyzs = x2;a_pxyzs++;
372  *a_pxyzs = y2;a_pxyzs++;
373  *a_pxyzs = 0;a_pxyzs++;
374  } else {
375  *a_pxyzs = x1;a_pxyzs++;
376  *a_pxyzs = y1;a_pxyzs++;
377  *a_pxyzs = 0;a_pxyzs++;
378 
379  *a_pxyzs = x2;a_pxyzs++;
380  *a_pxyzs = y2;a_pxyzs++;
381  *a_pxyzs = 0;a_pxyzs++;
382 
383  *a_pxyzs = x3;a_pxyzs++;
384  *a_pxyzs = y3;a_pxyzs++;
385  *a_pxyzs = 0;a_pxyzs++;
386  }
387 
388  x1 = x2;
389  y1 = y2;
390 
391  x2 = x3;
392  y2 = y3;
393 
394  flip = flip?false:true;
395  }
396 
397 }
398 
399 inline void line_strip_to_lines_2to3(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
400 
401  const float* vpos = a_xyzs;
402 
403  float x1 = *vpos;vpos++;
404  float y1 = *vpos;vpos++;
405 
406  float x2,y2;
407  for(size_t i=1;i<a_npt;i++) {
408  x2 = *vpos;vpos++;
409  y2 = *vpos;vpos++;
410 
411  *a_pxyzs = x1;a_pxyzs++;
412  *a_pxyzs = y1;a_pxyzs++;
413  *a_pxyzs = 0;a_pxyzs++;
414 
415  *a_pxyzs = x2;a_pxyzs++;
416  *a_pxyzs = y2;a_pxyzs++;
417  *a_pxyzs = 0;a_pxyzs++;
418 
419  x1 = x2;
420  y1 = y2;
421  }
422 
423 }
424 
425 inline void line_strip_to_lines(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
426  // a_pxyzs = (a_npt-1)*2*3
427 
428  const float* vpos = a_xyzs;
429 
430  float x1 = *vpos;vpos++;
431  float y1 = *vpos;vpos++;
432  float z1 = *vpos;vpos++;
433 
434  float x2,y2,z2;
435  for(size_t i=1;i<a_npt;i++) {
436  x2 = *vpos;vpos++;
437  y2 = *vpos;vpos++;
438  z2 = *vpos;vpos++;
439 
440  *a_pxyzs = x1;a_pxyzs++;
441  *a_pxyzs = y1;a_pxyzs++;
442  *a_pxyzs = z1;a_pxyzs++;
443 
444  *a_pxyzs = x2;a_pxyzs++;
445  *a_pxyzs = y2;a_pxyzs++;
446  *a_pxyzs = z2;a_pxyzs++;
447 
448  x1 = x2;
449  y1 = y2;
450  z1 = z2;
451  }
452 
453 }
454 
455 inline void line_loop_to_lines(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
456  // a_pxyzs = a_npt*2*3
457 
458  const float* vpos = a_xyzs;
459 
460  float x1 = *vpos;vpos++;
461  float y1 = *vpos;vpos++;
462  float z1 = *vpos;vpos++;
463 
464  float x0 = x1;
465  float y0 = y1;
466  float z0 = z1;
467 
468  float x2,y2,z2;
469  for(size_t i=1;i<a_npt;i++) {
470  x2 = *vpos;vpos++;
471  y2 = *vpos;vpos++;
472  z2 = *vpos;vpos++;
473 
474  *a_pxyzs = x1;a_pxyzs++;
475  *a_pxyzs = y1;a_pxyzs++;
476  *a_pxyzs = z1;a_pxyzs++;
477 
478  *a_pxyzs = x2;a_pxyzs++;
479  *a_pxyzs = y2;a_pxyzs++;
480  *a_pxyzs = z2;a_pxyzs++;
481 
482  x1 = x2;
483  y1 = y2;
484  z1 = z2;
485  }
486 
487  *a_pxyzs = x1;a_pxyzs++;
488  *a_pxyzs = y1;a_pxyzs++;
489  *a_pxyzs = z1;a_pxyzs++;
490 
491  *a_pxyzs = x0;a_pxyzs++;
492  *a_pxyzs = y0;a_pxyzs++;
493  *a_pxyzs = z0;a_pxyzs++;
494 
495 }
496 
497 inline void line_loop_to_line_strip(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
498  // a_pxyzs = (a_npt+1)*3
499 
500  const float* vpos = a_xyzs;
501 
502  float x1 = *vpos;vpos++;
503  float y1 = *vpos;vpos++;
504  float z1 = *vpos;vpos++;
505 
506  for(size_t i=0;i<a_npt;i++) {
507  *a_pxyzs = *vpos;vpos++;a_pxyzs++;
508  *a_pxyzs = *vpos;vpos++;a_pxyzs++;
509  *a_pxyzs = *vpos;vpos++;a_pxyzs++;
510  }
511 
512  *a_pxyzs = x1;a_pxyzs++;
513  *a_pxyzs = y1;a_pxyzs++;
514  *a_pxyzs = z1;a_pxyzs++;
515 }
516 
518 inline void triangle_fan_to_triangles_2to3(size_t a_npt,const float* a_xyzs,
519  float a_r,float a_g,float a_b,float a_a,
520  float*& a_pxyz_rgbas) {
521 
522  const float* vpos = a_xyzs;
523 
524  float x1 = *vpos;vpos++;
525  float y1 = *vpos;vpos++;
526 
527  float x2 = *vpos;vpos++;
528  float y2 = *vpos;vpos++;
529 
530  float x3,y3;
531  for(size_t i=2;i<a_npt;i++) {
532  x3 = *vpos;vpos++;
533  y3 = *vpos;vpos++;
534 
535  *a_pxyz_rgbas = x1;a_pxyz_rgbas++;
536  *a_pxyz_rgbas = y1;a_pxyz_rgbas++;
537  *a_pxyz_rgbas = 0;a_pxyz_rgbas++;
538 
539  *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
540  *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
541  *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
542  *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
543 
544  *a_pxyz_rgbas = x2;a_pxyz_rgbas++;
545  *a_pxyz_rgbas = y2;a_pxyz_rgbas++;
546  *a_pxyz_rgbas = 0;a_pxyz_rgbas++;
547 
548  *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
549  *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
550  *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
551  *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
552 
553  *a_pxyz_rgbas = x3;a_pxyz_rgbas++;
554  *a_pxyz_rgbas = y3;a_pxyz_rgbas++;
555  *a_pxyz_rgbas = 0;a_pxyz_rgbas++;
556 
557  *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
558  *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
559  *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
560  *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
561 
562  x2 = x3;
563  y2 = y3;
564  }
565 }
566 
567 inline void triangle_fan_to_triangles(size_t a_npt,const float* a_xyzs,
568  float a_r,float a_g,float a_b,float a_a,
569  float*& a_pxyz_rgbas) {
570 
571  const float* vpos = a_xyzs;
572 
573  float x1 = *vpos;vpos++;
574  float y1 = *vpos;vpos++;
575  float z1 = *vpos;vpos++;
576 
577  float x2 = *vpos;vpos++;
578  float y2 = *vpos;vpos++;
579  float z2 = *vpos;vpos++;
580 
581  float x3,y3,z3;
582  for(size_t i=2;i<a_npt;i++) {
583  x3 = *vpos;vpos++;
584  y3 = *vpos;vpos++;
585  z3 = *vpos;vpos++;
586 
587  *a_pxyz_rgbas = x1;a_pxyz_rgbas++;
588  *a_pxyz_rgbas = y1;a_pxyz_rgbas++;
589  *a_pxyz_rgbas = z1;a_pxyz_rgbas++;
590 
591  *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
592  *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
593  *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
594  *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
595 
596  *a_pxyz_rgbas = x2;a_pxyz_rgbas++;
597  *a_pxyz_rgbas = y2;a_pxyz_rgbas++;
598  *a_pxyz_rgbas = z2;a_pxyz_rgbas++;
599 
600  *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
601  *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
602  *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
603  *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
604 
605  *a_pxyz_rgbas = x3;a_pxyz_rgbas++;
606  *a_pxyz_rgbas = y3;a_pxyz_rgbas++;
607  *a_pxyz_rgbas = z3;a_pxyz_rgbas++;
608 
609  *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
610  *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
611  *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
612  *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
613 
614  x2 = x3;
615  y2 = y3;
616  z2 = z3;
617  }
618 }
619 
620 }}
621 
622 #endif
tools::gl::triangle_strip_to_triangles_nms
void triangle_strip_to_triangles_nms(size_t a_npt, const float *a_xyzs, const float *a_nms, float *&a_pxyzs, float *&a_pnms)
Definition: glprims:307
tools::gl::triangle_fan_to_triangles_nms
void triangle_fan_to_triangles_nms(size_t a_npt, const float *a_xyzs, const float *a_nms, float *&a_pxyzs, float *&a_pnms)
Definition: glprims:302
tools::gl::is_line
bool is_line(mode_t a_mode)
Definition: glprims:31
tools::gl::triangle_strip_to_triangles_2to3
void triangle_strip_to_triangles_2to3(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:346
tools::gl::triangles
mode_t triangles()
Definition: glprims:20
tools::gl::line_strip_to_lines
void line_strip_to_lines(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:425
tools::gl::triangle_strip_to_triangles_texture
void triangle_strip_to_triangles_texture(size_t a_npt, const float *a_xyzs, const float *a_tcs, float *&a_pxyzs, float *&a_ptcs)
Definition: glprims:209
tools::gl::triangle_fan
mode_t triangle_fan()
Definition: glprims:22
tools::gl::lines
mode_t lines()
Definition: glprims:17
tools::gl::triangle_fan_to_triangles_2to3
void triangle_fan_to_triangles_2to3(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:313
tools::gl::line_strip
mode_t line_strip()
Definition: glprims:19
tools::gl::triangle_strip
mode_t triangle_strip()
Definition: glprims:21
tools::gl::triangle_fan_to_triangles
void triangle_fan_to_triangles(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:52
tools::gl::points
mode_t points()
Definition: glprims:16
tools::gl::mode_t
unsigned char mode_t
Definition: glprims:14
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::gl::is_mode
bool is_mode(mode_t a_mode)
Definition: glprims:27
tools::gl::line_loop
mode_t line_loop()
Definition: glprims:18
tools::gl::line_loop_to_lines
void line_loop_to_lines(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:455
tools::gl::triangle_strip_to_triangles
void triangle_strip_to_triangles(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:151
tools::gl::line_strip_to_lines_2to3
void line_strip_to_lines_2to3(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:399
tools::gl::cvt_2to3
void cvt_2to3(size_t a_npt, const float *a_xys, float *&a_xyzs)
Definition: glprims:39
tools::gl::line_loop_to_line_strip
void line_loop_to_line_strip(size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
Definition: glprims:497
tools::gl::triangle_fan_to_triangles_texture
void triangle_fan_to_triangles_texture(size_t a_npt, const float *a_xyzs, const float *a_tcs, float *&a_pxyzs, float *&a_ptcs)
Definition: glprims:89