root/lang/d/koke/trunk/openglu_gdc.d @ 6424

Revision 6424, 15.3 kB (checked in by itkz, 6 years ago)

split OpenGL porting on GDC and DMD

Line 
1import opengl;
2
3extern(System):
4
5GLubyte* gluErrorString (
6    GLenum   errCode);
7
8wchar* gluErrorUnicodeStringEXT (
9    GLenum   errCode);
10
11GLubyte* gluGetString (
12    GLenum   name);
13
14void gluOrtho2D (
15    GLdouble left,
16    GLdouble right,
17    GLdouble bottom,
18    GLdouble top);
19
20void gluPerspective (
21    GLdouble fovy,
22    GLdouble aspect,
23    GLdouble zNear,
24    GLdouble zFar);
25
26void gluPickMatrix (
27    GLdouble x,
28    GLdouble y,
29    GLdouble width,
30    GLdouble height,
31    GLint[4]    viewport);
32
33void gluLookAt (
34    GLdouble eyex,
35    GLdouble eyey,
36    GLdouble eyez,
37    GLdouble centerx,
38    GLdouble centery,
39    GLdouble centerz,
40    GLdouble upx,
41    GLdouble upy,
42    GLdouble upz);
43
44int gluProject (
45    GLdouble        objx,
46    GLdouble        objy,
47    GLdouble        objz, 
48    GLdouble[16]    modelMatrix,
49    GLdouble[16]    projMatrix,
50    GLint[4]        viewport,
51    GLdouble        *winx,
52    GLdouble        *winy,
53    GLdouble        *winz);
54
55int gluUnProject (
56    GLdouble       winx,
57    GLdouble       winy,
58    GLdouble       winz,
59    GLdouble[16]   modelMatrix,
60    GLdouble[16]   projMatrix,
61    GLint[4]       viewport,
62    GLdouble       *objx,
63    GLdouble       *objy,
64    GLdouble       *objz);
65
66
67int gluScaleImage (
68    GLenum      format,
69    GLint       widthin,
70    GLint       heightin,
71    GLenum      typein,
72    void  *datain,
73    GLint       widthout,
74    GLint       heightout,
75    GLenum      typeout,
76    void        *dataout);
77
78
79int gluBuild1DMipmaps (
80    GLenum      target,
81    GLint       components,
82    GLint       width,
83    GLenum      format,
84    GLenum      type,
85    void  *data);
86
87int gluBuild2DMipmaps (
88    GLenum      target,
89    GLint       components,
90    GLint       width,
91    GLint       height,
92    GLenum      format,
93    GLenum      type,
94    void  *data);
95
96struct GLUnurbs { }
97struct GLUquadric { }
98struct GLUtesselator { }
99
100/* backwards compatibility: */
101alias GLUnurbs GLUnurbsObj;
102alias GLUquadric GLUquadricObj;
103alias GLUtesselator GLUtesselatorObj;
104alias GLUtesselator GLUtriangulatorObj;
105
106GLUquadric* gluNewQuadric ();
107
108void gluDeleteQuadric (
109    GLUquadric          *state);
110
111void gluQuadricNormals (
112    GLUquadric          *quadObject,
113    GLenum              normals);
114
115void gluQuadricTexture (
116    GLUquadric          *quadObject,
117    GLboolean           textureCoords);
118
119void gluQuadricOrientation (
120    GLUquadric          *quadObject,
121    GLenum              orientation);
122
123void gluQuadricDrawStyle (
124    GLUquadric          *quadObject,
125    GLenum              drawStyle);
126
127void gluCylinder (
128    GLUquadric          *qobj,
129    GLdouble            baseRadius,
130    GLdouble            topRadius,
131    GLdouble            height,
132    GLint               slices,
133    GLint               stacks);
134
135void gluDisk (
136    GLUquadric          *qobj,
137    GLdouble            innerRadius,
138    GLdouble            outerRadius,
139    GLint               slices,
140    GLint               loops);
141
142void gluPartialDisk (
143    GLUquadric          *qobj,
144    GLdouble            innerRadius,
145    GLdouble            outerRadius,
146    GLint               slices,
147    GLint               loops,
148    GLdouble            startAngle,
149    GLdouble            sweepAngle);
150
151void gluSphere (
152    GLUquadric          *qobj,
153    GLdouble            radius,
154    GLint               slices,
155    GLint               stacks);
156
157void gluQuadricCallback (
158    GLUquadric          *qobj,
159    GLenum              which,
160    void                (* fn)());
161
162GLUtesselator*  gluNewTess(         
163    );
164
165void  gluDeleteTess(       
166    GLUtesselator       *tess );
167
168void  gluTessBeginPolygon(
169    GLUtesselator       *tess,
170    void                *polygon_data );
171
172void  gluTessBeginContour(
173    GLUtesselator       *tess );
174
175void  gluTessVertex(       
176    GLUtesselator       *tess,
177    GLdouble[3]         coords,
178    void                *data );
179
180void  gluTessEndContour(   
181    GLUtesselator       *tess );
182
183void  gluTessEndPolygon(   
184    GLUtesselator       *tess );
185
186void  gluTessProperty(     
187    GLUtesselator       *tess,
188    GLenum              which,
189    GLdouble            value );
190 
191void  gluTessNormal(       
192    GLUtesselator       *tess,
193    GLdouble            x,
194    GLdouble            y,
195    GLdouble            z );
196
197void  gluTessCallback(     
198    GLUtesselator       *tess,
199    GLenum              which,
200    void                ( *fn)());
201
202void  gluGetTessProperty( 
203    GLUtesselator       *tess,
204    GLenum              which,
205    GLdouble            *value );
206 
207GLUnurbs* gluNewNurbsRenderer ();
208
209void gluDeleteNurbsRenderer (
210    GLUnurbs            *nobj);
211
212void gluBeginSurface (
213    GLUnurbs            *nobj);
214
215void gluBeginCurve (
216    GLUnurbs            *nobj);
217
218void gluEndCurve (
219    GLUnurbs            *nobj);
220
221void gluEndSurface (
222    GLUnurbs            *nobj);
223
224void gluBeginTrim (
225    GLUnurbs            *nobj);
226
227void gluEndTrim (
228    GLUnurbs            *nobj);
229
230void gluPwlCurve (
231    GLUnurbs            *nobj,
232    GLint               count,
233    GLfloat             *array,
234    GLint               stride,
235    GLenum              type);
236
237void gluNurbsCurve (
238    GLUnurbs            *nobj,
239    GLint               nknots,
240    GLfloat             *knot,
241    GLint               stride,
242    GLfloat             *ctlarray,
243    GLint               order,
244    GLenum              type);
245
246void
247gluNurbsSurface(     
248    GLUnurbs            *nobj,
249    GLint               sknot_count,
250    float               *sknot,
251    GLint               tknot_count,
252    GLfloat             *tknot,
253    GLint               s_stride,
254    GLint               t_stride,
255    GLfloat             *ctlarray,
256    GLint               sorder,
257    GLint               torder,
258    GLenum              type);
259
260void
261gluLoadSamplingMatrices (
262    GLUnurbs            *nobj,
263    GLfloat[16]     modelMatrix,
264    GLfloat[16]     projMatrix,
265    GLint[4]        viewport );
266
267void
268gluNurbsProperty (
269    GLUnurbs            *nobj,
270    GLenum              property,
271    GLfloat             value );
272
273void
274gluGetNurbsProperty (
275    GLUnurbs            *nobj,
276    GLenum              property,
277    GLfloat             *value );
278
279void
280gluNurbsCallback (
281    GLUnurbs            *nobj,
282    GLenum              which,
283    void                (* fn)() );
284
285
286/****            function prototypes    ****/
287
288/* gluQuadricCallback */
289typedef void (* GLUquadricErrorProc) (GLenum);
290
291/* gluTessCallback */
292typedef void (* GLUtessBeginProc)        (GLenum);
293typedef void (* GLUtessEdgeFlagProc)     (GLboolean);
294typedef void (* GLUtessVertexProc)       (void *);
295typedef void (* GLUtessEndProc)          ();
296typedef void (* GLUtessErrorProc)        (GLenum);
297typedef void (* GLUtessCombineProc)      (GLdouble[3],
298                                                  void*[4],
299                                                  GLfloat[4],
300                                                  void** );
301typedef void (* GLUtessBeginDataProc)    (GLenum, void *);
302typedef void (* GLUtessEdgeFlagDataProc) (GLboolean, void *);
303typedef void (* GLUtessVertexDataProc)   (void *, void *);
304typedef void (* GLUtessEndDataProc)      (void *);
305typedef void (* GLUtessErrorDataProc)    (GLenum, void *);
306typedef void (* GLUtessCombineDataProc)  (GLdouble[3],
307                                                  void*[4],
308                                                  GLfloat[4],
309                                                  void**,
310                                                  void* );
311
312/* gluNurbsCallback */
313typedef void (* GLUnurbsErrorProc)   (GLenum);
314
315
316/****           Generic constants               ****/
317
318/* Version */
319const int GLU_VERSION_1_1               = 1;
320const int GLU_VERSION_1_2               = 1;
321
322/* Errors: (return value 0 = no error) */
323const int GLU_INVALID_ENUM      = 100900;
324const int GLU_INVALID_VALUE     = 100901;
325const int GLU_OUT_OF_MEMORY     = 100902;
326const int GLU_INCOMPATIBLE_GL_VERSION   = 100903;
327
328/* StringName */
329const int GLU_VERSION           = 100800;
330const int GLU_EXTENSIONS        = 100801;
331
332/* Boolean */
333const int GLU_TRUE              = GL_TRUE;
334const int GLU_FALSE             = GL_FALSE;
335
336
337/****           Quadric constants               ****/
338
339/* QuadricNormal */
340const int GLU_SMOOTH            = 100000;
341const int GLU_FLAT              = 100001;
342const int GLU_NONE              = 100002;
343
344/* QuadricDrawStyle */
345const int GLU_POINT             = 100010;
346const int GLU_LINE              = 100011;
347const int GLU_FILL              = 100012;
348const int GLU_SILHOUETTE        = 100013;
349
350/* QuadricOrientation */
351const int GLU_OUTSIDE           = 100020;
352const int GLU_INSIDE            = 100021;
353
354/*  types: */
355/*      GLU_ERROR               100103 */
356
357
358/****           Tesselation constants           ****/
359
360const real GLU_TESS_MAX_COORD            = 1.0e150;
361
362/* TessProperty */
363const int GLU_TESS_WINDING_RULE         = 100140;
364const int GLU_TESS_BOUNDARY_ONLY        = 100141;
365const int GLU_TESS_TOLERANCE            = 100142;
366
367/* TessWinding */
368const int GLU_TESS_WINDING_ODD          = 100130;
369const int GLU_TESS_WINDING_NONZERO      = 100131;
370const int GLU_TESS_WINDING_POSITIVE     = 100132;
371const int GLU_TESS_WINDING_NEGATIVE     = 100133;
372const int GLU_TESS_WINDING_ABS_GEQ_TWO  = 100134;
373
374/* TessCallback */
375const int GLU_TESS_BEGIN        = 100100;  /* void (*)(GLenum    type)  */
376const int GLU_TESS_VERTEX       = 100101;  /* void (*)(void      *data) */
377const int GLU_TESS_END          = 100102;  /* void (*)(void)            */
378const int GLU_TESS_ERROR        = 100103;  /* void (*)(GLenum    errno) */
379const int GLU_TESS_EDGE_FLAG    = 100104;  /* void (*)(GLboolean boundaryEdge)  */
380const int GLU_TESS_COMBINE      = 100105;  /* void (*)(GLdouble  coords[3],
381                                                            void      *data[4],
382                                                            GLfloat   weight[4],
383                                                            void      **dataOut)     */
384const int GLU_TESS_BEGIN_DATA   = 100106;  /* void (*)(GLenum    type, 
385                                                            void      *polygon_data) */
386const int GLU_TESS_VERTEX_DATA  = 100107;  /* void (*)(void      *data,
387                                                            void      *polygon_data) */
388const int GLU_TESS_END_DATA     = 100108;  /* void (*)(void      *polygon_data) */
389const int GLU_TESS_ERROR_DATA   = 100109;  /* void (*)(GLenum    errno,
390                                                            void      *polygon_data) */
391const int GLU_TESS_EDGE_FLAG_DATA = 100110;  /* void (*)(GLboolean boundaryEdge,
392                                                            void      *polygon_data) */
393const int GLU_TESS_COMBINE_DATA = 100111; /* void (*)(GLdouble  coords[3],
394                                                            void      *data[4],
395                                                            GLfloat   weight[4],
396                                                            void      **dataOut,
397                                                            void      *polygon_data) */
398
399/* TessError */
400const int GLU_TESS_ERROR1   = 100151;
401const int GLU_TESS_ERROR2   = 100152;
402const int GLU_TESS_ERROR3   = 100153;
403const int GLU_TESS_ERROR4   = 100154;
404const int GLU_TESS_ERROR5   = 100155;
405const int GLU_TESS_ERROR6   = 100156;
406const int GLU_TESS_ERROR7   = 100157;
407const int GLU_TESS_ERROR8   = 100158;
408
409const int GLU_TESS_MISSING_BEGIN_POLYGON = GLU_TESS_ERROR1;
410const int GLU_TESS_MISSING_BEGIN_CONTOUR = GLU_TESS_ERROR2;
411const int GLU_TESS_MISSING_END_POLYGON   = GLU_TESS_ERROR3;
412const int GLU_TESS_MISSING_END_CONTOUR   = GLU_TESS_ERROR4;
413const int GLU_TESS_COORD_TOO_LARGE       = GLU_TESS_ERROR5;
414const int GLU_TESS_NEED_COMBINE_CALLBACK = GLU_TESS_ERROR6;
415
416/****           NURBS constants                 ****/
417
418/* NurbsProperty */
419const int GLU_AUTO_LOAD_MATRIX   = 100200;
420const int GLU_CULLING            = 100201;
421const int GLU_SAMPLING_TOLERANCE = 100203;
422const int GLU_DISPLAY_MODE       = 100204;
423const int GLU_PARAMETRIC_TOLERANCE      = 100202;
424const int GLU_SAMPLING_METHOD           = 100205;
425const int GLU_U_STEP                    = 100206;
426const int GLU_V_STEP                    = 100207;
427
428/* NurbsSampling */
429const int GLU_PATH_LENGTH               = 100215;
430const int GLU_PARAMETRIC_ERROR          = 100216;
431const int GLU_DOMAIN_DISTANCE           = 100217;
432
433
434/* NurbsTrim */
435const int GLU_MAP1_TRIM_2       = 100210;
436const int GLU_MAP1_TRIM_3       = 100211;
437
438/* NurbsDisplay */
439/*      GLU_FILL                100012 */
440const int GLU_OUTLINE_POLYGON   = 100240;
441const int GLU_OUTLINE_PATCH     = 100241;
442
443/* NurbsCallback */
444/*      GLU_ERROR               100103 */
445
446/* NurbsErrors */
447const int GLU_NURBS_ERROR1      = 100251;
448const int GLU_NURBS_ERROR2      = 100252;
449const int GLU_NURBS_ERROR3      = 100253;
450const int GLU_NURBS_ERROR4      = 100254;
451const int GLU_NURBS_ERROR5      = 100255;
452const int GLU_NURBS_ERROR6      = 100256;
453const int GLU_NURBS_ERROR7      = 100257;
454const int GLU_NURBS_ERROR8      = 100258;
455const int GLU_NURBS_ERROR9      = 100259;
456const int GLU_NURBS_ERROR10     = 100260;
457const int GLU_NURBS_ERROR11     = 100261;
458const int GLU_NURBS_ERROR12     = 100262;
459const int GLU_NURBS_ERROR13     = 100263;
460const int GLU_NURBS_ERROR14     = 100264;
461const int GLU_NURBS_ERROR15     = 100265;
462const int GLU_NURBS_ERROR16     = 100266;
463const int GLU_NURBS_ERROR17     = 100267;
464const int GLU_NURBS_ERROR18     = 100268;
465const int GLU_NURBS_ERROR19     = 100269;
466const int GLU_NURBS_ERROR20     = 100270;
467const int GLU_NURBS_ERROR21     = 100271;
468const int GLU_NURBS_ERROR22     = 100272;
469const int GLU_NURBS_ERROR23     = 100273;
470const int GLU_NURBS_ERROR24     = 100274;
471const int GLU_NURBS_ERROR25     = 100275;
472const int GLU_NURBS_ERROR26     = 100276;
473const int GLU_NURBS_ERROR27     = 100277;
474const int GLU_NURBS_ERROR28     = 100278;
475const int GLU_NURBS_ERROR29     = 100279;
476const int GLU_NURBS_ERROR30     = 100280;
477const int GLU_NURBS_ERROR31     = 100281;
478const int GLU_NURBS_ERROR32     = 100282;
479const int GLU_NURBS_ERROR33     = 100283;
480const int GLU_NURBS_ERROR34     = 100284;
481const int GLU_NURBS_ERROR35     = 100285;
482const int GLU_NURBS_ERROR36     = 100286;
483const int GLU_NURBS_ERROR37     = 100287;
484
485/****           Backwards compatibility for old tesselator           ****/
486
487void   gluBeginPolygon( GLUtesselator *tess );
488
489void   gluNextContour(  GLUtesselator *tess,
490                                 GLenum        type );
491
492void   gluEndPolygon(   GLUtesselator *tess );
493
494/* Contours types -- obsolete! */
495const int GLU_CW        = 100120;
496const int GLU_CCW       = 100121;
497const int GLU_INTERIOR  = 100122;
498const int GLU_EXTERIOR  = 100123;
499const int GLU_UNKNOWN   = 100124;
500
501/* Names without "TESS_" prefix */
502const int GLU_BEGIN     = GLU_TESS_BEGIN;
503const int GLU_VERTEX    = GLU_TESS_VERTEX;
504const int GLU_END       = GLU_TESS_END;
505const int GLU_ERROR     = GLU_TESS_ERROR;
506const int GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG;
507
Note: See TracBrowser for help on using the browser.