g4tools  5.4.0
Typedefs | Functions
tools::gl Namespace Reference

Typedefs

typedef unsigned char mode_t
 

Functions

mode_t points ()
 
mode_t lines ()
 
mode_t line_loop ()
 
mode_t line_strip ()
 
mode_t triangles ()
 
mode_t triangle_strip ()
 
mode_t triangle_fan ()
 
bool is_mode (mode_t a_mode)
 
bool is_line (mode_t a_mode)
 
void cvt_2to3 (size_t a_npt, const float *a_xys, float *&a_xyzs)
 
void triangle_fan_to_triangles (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void triangle_fan_to_triangles_texture (size_t a_npt, const float *a_xyzs, const float *a_tcs, float *&a_pxyzs, float *&a_ptcs)
 
void triangle_strip_to_triangles (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void triangle_strip_to_triangles_texture (size_t a_npt, const float *a_xyzs, const float *a_tcs, float *&a_pxyzs, float *&a_ptcs)
 
void triangle_fan_to_triangles_nms (size_t a_npt, const float *a_xyzs, const float *a_nms, float *&a_pxyzs, float *&a_pnms)
 
void triangle_strip_to_triangles_nms (size_t a_npt, const float *a_xyzs, const float *a_nms, float *&a_pxyzs, float *&a_pnms)
 
void triangle_fan_to_triangles_2to3 (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void triangle_strip_to_triangles_2to3 (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void line_strip_to_lines_2to3 (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void line_strip_to_lines (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void line_loop_to_lines (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void line_loop_to_line_strip (size_t a_npt, const float *a_xyzs, float *&a_pxyzs)
 
void triangle_fan_to_triangles_2to3 (size_t a_npt, const float *a_xyzs, float a_r, float a_g, float a_b, float a_a, float *&a_pxyz_rgbas)
 for DirectX_action : More...
 
void triangle_fan_to_triangles (size_t a_npt, const float *a_xyzs, float a_r, float a_g, float a_b, float a_a, float *&a_pxyz_rgbas)
 

Typedef Documentation

◆ mode_t

typedef unsigned char tools::gl::mode_t

Definition at line 14 of file glprims.

Function Documentation

◆ cvt_2to3()

void tools::gl::cvt_2to3 ( size_t  a_npt,
const float *  a_xys,
float *&  a_xyzs 
)
inline

Definition at line 39 of file glprims.

39  {
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 }

◆ is_line()

bool tools::gl::is_line ( mode_t  a_mode)
inline

Definition at line 31 of file glprims.

31  {
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 }

◆ is_mode()

bool tools::gl::is_mode ( mode_t  a_mode)
inline

Definition at line 27 of file glprims.

27  {
28  return a_mode<=0x006?true:false;
29 }

◆ line_loop()

mode_t tools::gl::line_loop ( )
inline

Definition at line 18 of file glprims.

18 {return 0x0002;}

◆ line_loop_to_line_strip()

void tools::gl::line_loop_to_line_strip ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 497 of file glprims.

497  {
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 }

◆ line_loop_to_lines()

void tools::gl::line_loop_to_lines ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 455 of file glprims.

455  {
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 }

◆ line_strip()

mode_t tools::gl::line_strip ( )
inline

Definition at line 19 of file glprims.

19 {return 0x0003;} //polyline

◆ line_strip_to_lines()

void tools::gl::line_strip_to_lines ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 425 of file glprims.

425  {
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 }

◆ line_strip_to_lines_2to3()

void tools::gl::line_strip_to_lines_2to3 ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 399 of file glprims.

399  {
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 }

◆ lines()

mode_t tools::gl::lines ( )
inline

Definition at line 17 of file glprims.

17 {return 0x0001;} //segments

◆ points()

mode_t tools::gl::points ( )
inline

Definition at line 16 of file glprims.

16 {return 0x0000;}

◆ triangle_fan()

mode_t tools::gl::triangle_fan ( )
inline

Definition at line 22 of file glprims.

22 {return 0x0006;}

◆ triangle_fan_to_triangles() [1/2]

void tools::gl::triangle_fan_to_triangles ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 52 of file glprims.

52  {
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 }

◆ triangle_fan_to_triangles() [2/2]

void tools::gl::triangle_fan_to_triangles ( size_t  a_npt,
const float *  a_xyzs,
float  a_r,
float  a_g,
float  a_b,
float  a_a,
float *&  a_pxyz_rgbas 
)
inline

Definition at line 567 of file glprims.

569  {
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 }

◆ triangle_fan_to_triangles_2to3() [1/2]

void tools::gl::triangle_fan_to_triangles_2to3 ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 313 of file glprims.

313  {
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 }

◆ triangle_fan_to_triangles_2to3() [2/2]

void tools::gl::triangle_fan_to_triangles_2to3 ( size_t  a_npt,
const float *  a_xyzs,
float  a_r,
float  a_g,
float  a_b,
float  a_a,
float *&  a_pxyz_rgbas 
)
inline

for DirectX_action :

Definition at line 518 of file glprims.

520  {
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 }

◆ triangle_fan_to_triangles_nms()

void tools::gl::triangle_fan_to_triangles_nms ( size_t  a_npt,
const float *  a_xyzs,
const float *  a_nms,
float *&  a_pxyzs,
float *&  a_pnms 
)
inline

Definition at line 302 of file glprims.

302  {
303  triangle_fan_to_triangles(a_npt,a_xyzs,a_pxyzs);
304  triangle_fan_to_triangles(a_npt,a_nms,a_pnms);
305 }

◆ triangle_fan_to_triangles_texture()

void tools::gl::triangle_fan_to_triangles_texture ( size_t  a_npt,
const float *  a_xyzs,
const float *  a_tcs,
float *&  a_pxyzs,
float *&  a_ptcs 
)
inline

Definition at line 89 of file glprims.

89  {
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 }

◆ triangle_strip()

mode_t tools::gl::triangle_strip ( )
inline

Definition at line 21 of file glprims.

21 {return 0x0005;}

◆ triangle_strip_to_triangles()

void tools::gl::triangle_strip_to_triangles ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 151 of file glprims.

151  {
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 }

◆ triangle_strip_to_triangles_2to3()

void tools::gl::triangle_strip_to_triangles_2to3 ( size_t  a_npt,
const float *  a_xyzs,
float *&  a_pxyzs 
)
inline

Definition at line 346 of file glprims.

346  {
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 }

◆ triangle_strip_to_triangles_nms()

void tools::gl::triangle_strip_to_triangles_nms ( size_t  a_npt,
const float *  a_xyzs,
const float *  a_nms,
float *&  a_pxyzs,
float *&  a_pnms 
)
inline

Definition at line 307 of file glprims.

307  {
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 }

◆ triangle_strip_to_triangles_texture()

void tools::gl::triangle_strip_to_triangles_texture ( size_t  a_npt,
const float *  a_xyzs,
const float *  a_tcs,
float *&  a_pxyzs,
float *&  a_ptcs 
)
inline

Definition at line 209 of file glprims.

209  {
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 }

◆ triangles()

mode_t tools::gl::triangles ( )
inline

Definition at line 20 of file glprims.

20 {return 0x0004;}
tools::gl::triangle_fan_to_triangles
void triangle_fan_to_triangles(size_t a_npt, const float *a_xyzs, float a_r, float a_g, float a_b, float a_a, float *&a_pxyz_rgbas)
Definition: glprims:567
tools::gl::lines
mode_t lines()
Definition: glprims:17
tools::gl::line_strip
mode_t line_strip()
Definition: glprims:19
tools::gl::points
mode_t points()
Definition: glprims:16
tools::gl::line_loop
mode_t line_loop()
Definition: glprims:18
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