Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/glprims

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/tools/glprims (Version 11.3.0) and /externals/g4tools/include/tools/glprims (Version 11.2.1)


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