source: GTP/branches/IllumWPdeliver2008dec/IlluminationWP/demos/Standalone/Hierarchical Systems Demo [OpenGL]/RESOURCES/include/GL/GLU.h @ 3255

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