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

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

split OpenGL porting on GDC and DMD

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