1 /* 2 Copyright: (c) 1999 by Apple Computer, Inc., all rights reserved. 3 */ 4 5 #ifndef __glu_h__ 6 #define __glu_h__ 7 8 #include "GL/gl.h" 9 #include "GL/glext.h" 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 16 /*************************************************************/ 17 18 /* Extensions */ 19 #define GLU_EXT_object_space_tess 1 20 #define GLU_EXT_nurbs_tessellator 1 21 22 /* Boolean */ 23 #define GLU_FALSE 0 24 #define GLU_TRUE 1 25 26 /* Version */ 27 #define GLU_VERSION_1_1 1 28 #define GLU_VERSION_1_2 1 29 #define GLU_VERSION_1_3 1 30 31 /* StringName */ 32 #define GLU_VERSION 100800 33 #define GLU_EXTENSIONS 100801 34 35 /* ErrorCode */ 36 #define GLU_INVALID_ENUM 100900 37 #define GLU_INVALID_VALUE 100901 38 #define GLU_OUT_OF_MEMORY 100902 39 #define GLU_INCOMPATIBLE_GL_VERSION 100903 40 #define GLU_INVALID_OPERATION 100904 41 42 43 /* NurbsDisplay */ 44 /* GLU_FILL */ 45 #define GLU_OUTLINE_POLYGON 100240 46 #define GLU_OUTLINE_PATCH 100241 47 48 /* NurbsCallback */ 49 #define GLU_NURBS_ERROR 100103 50 #define GLU_ERROR 100103 51 #define GLU_NURBS_BEGIN 100164 52 #define GLU_NURBS_BEGIN_EXT 100164 53 #define GLU_NURBS_VERTEX 100165 54 #define GLU_NURBS_VERTEX_EXT 100165 55 #define GLU_NURBS_NORMAL 100166 56 #define GLU_NURBS_NORMAL_EXT 100166 57 #define GLU_NURBS_COLOR 100167 58 #define GLU_NURBS_COLOR_EXT 100167 59 #define GLU_NURBS_TEXTURE_COORD 100168 60 #define GLU_NURBS_TEX_COORD_EXT 100168 61 #define GLU_NURBS_END 100169 62 #define GLU_NURBS_END_EXT 100169 63 #define GLU_NURBS_BEGIN_DATA 100170 64 #define GLU_NURBS_BEGIN_DATA_EXT 100170 65 #define GLU_NURBS_VERTEX_DATA 100171 66 #define GLU_NURBS_VERTEX_DATA_EXT 100171 67 #define GLU_NURBS_NORMAL_DATA 100172 68 #define GLU_NURBS_NORMAL_DATA_EXT 100172 69 #define GLU_NURBS_COLOR_DATA 100173 70 #define GLU_NURBS_COLOR_DATA_EXT 100173 71 #define GLU_NURBS_TEXTURE_COORD_DATA 100174 72 #define GLU_NURBS_TEX_COORD_DATA_EXT 100174 73 #define GLU_NURBS_END_DATA 100175 74 #define GLU_NURBS_END_DATA_EXT 100175 75 76 /* NurbsError */ 77 #define GLU_NURBS_ERROR1 100251 78 #define GLU_NURBS_ERROR2 100252 79 #define GLU_NURBS_ERROR3 100253 80 #define GLU_NURBS_ERROR4 100254 81 #define GLU_NURBS_ERROR5 100255 82 #define GLU_NURBS_ERROR6 100256 83 #define GLU_NURBS_ERROR7 100257 84 #define GLU_NURBS_ERROR8 100258 85 #define GLU_NURBS_ERROR9 100259 86 #define GLU_NURBS_ERROR10 100260 87 #define GLU_NURBS_ERROR11 100261 88 #define GLU_NURBS_ERROR12 100262 89 #define GLU_NURBS_ERROR13 100263 90 #define GLU_NURBS_ERROR14 100264 91 #define GLU_NURBS_ERROR15 100265 92 #define GLU_NURBS_ERROR16 100266 93 #define GLU_NURBS_ERROR17 100267 94 #define GLU_NURBS_ERROR18 100268 95 #define GLU_NURBS_ERROR19 100269 96 #define GLU_NURBS_ERROR20 100270 97 #define GLU_NURBS_ERROR21 100271 98 #define GLU_NURBS_ERROR22 100272 99 #define GLU_NURBS_ERROR23 100273 100 #define GLU_NURBS_ERROR24 100274 101 #define GLU_NURBS_ERROR25 100275 102 #define GLU_NURBS_ERROR26 100276 103 #define GLU_NURBS_ERROR27 100277 104 #define GLU_NURBS_ERROR28 100278 105 #define GLU_NURBS_ERROR29 100279 106 #define GLU_NURBS_ERROR30 100280 107 #define GLU_NURBS_ERROR31 100281 108 #define GLU_NURBS_ERROR32 100282 109 #define GLU_NURBS_ERROR33 100283 110 #define GLU_NURBS_ERROR34 100284 111 #define GLU_NURBS_ERROR35 100285 112 #define GLU_NURBS_ERROR36 100286 113 #define GLU_NURBS_ERROR37 100287 114 115 /* NurbsProperty */ 116 #define GLU_AUTO_LOAD_MATRIX 100200 117 #define GLU_CULLING 100201 118 #define GLU_SAMPLING_TOLERANCE 100203 119 #define GLU_DISPLAY_MODE 100204 120 #define GLU_PARAMETRIC_TOLERANCE 100202 121 #define GLU_SAMPLING_METHOD 100205 122 #define GLU_U_STEP 100206 123 #define GLU_V_STEP 100207 124 #define GLU_NURBS_MODE 100160 125 #define GLU_NURBS_MODE_EXT 100160 126 #define GLU_NURBS_TESSELLATOR 100161 127 #define GLU_NURBS_TESSELLATOR_EXT 100161 128 #define GLU_NURBS_RENDERER 100162 129 #define GLU_NURBS_RENDERER_EXT 100162 130 131 /* NurbsSampling */ 132 #define GLU_OBJECT_PARAMETRIC_ERROR 100208 133 #define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208 134 #define GLU_OBJECT_PATH_LENGTH 100209 135 #define GLU_OBJECT_PATH_LENGTH_EXT 100209 136 #define GLU_PATH_LENGTH 100215 137 #define GLU_PARAMETRIC_ERROR 100216 138 #define GLU_DOMAIN_DISTANCE 100217 139 140 /* NurbsTrim */ 141 #define GLU_MAP1_TRIM_2 100210 142 #define GLU_MAP1_TRIM_3 100211 143 144 /* QuadricDrawStyle */ 145 #define GLU_POINT 100010 146 #define GLU_LINE 100011 147 #define GLU_FILL 100012 148 #define GLU_SILHOUETTE 100013 149 150 /* QuadricCallback */ 151 /* GLU_ERROR */ 152 153 /* QuadricNormal */ 154 #define GLU_SMOOTH 100000 155 #define GLU_FLAT 100001 156 #define GLU_NONE 100002 157 158 /* QuadricOrientation */ 159 #define GLU_OUTSIDE 100020 160 #define GLU_INSIDE 100021 161 162 /* TessCallback */ 163 #define GLU_TESS_BEGIN 100100 164 #define GLU_BEGIN 100100 165 #define GLU_TESS_VERTEX 100101 166 #define GLU_VERTEX 100101 167 #define GLU_TESS_END 100102 168 #define GLU_END 100102 169 #define GLU_TESS_ERROR 100103 170 #define GLU_TESS_EDGE_FLAG 100104 171 #define GLU_EDGE_FLAG 100104 172 #define GLU_TESS_COMBINE 100105 173 #define GLU_TESS_BEGIN_DATA 100106 174 #define GLU_TESS_VERTEX_DATA 100107 175 #define GLU_TESS_END_DATA 100108 176 #define GLU_TESS_ERROR_DATA 100109 177 #define GLU_TESS_EDGE_FLAG_DATA 100110 178 #define GLU_TESS_COMBINE_DATA 100111 179 180 /* TessContour */ 181 #define GLU_CW 100120 182 #define GLU_CCW 100121 183 #define GLU_INTERIOR 100122 184 #define GLU_EXTERIOR 100123 185 #define GLU_UNKNOWN 100124 186 187 /* TessProperty */ 188 #define GLU_TESS_WINDING_RULE 100140 189 #define GLU_TESS_BOUNDARY_ONLY 100141 190 #define GLU_TESS_TOLERANCE 100142 191 192 /* TessError */ 193 #define GLU_TESS_ERROR1 100151 194 #define GLU_TESS_ERROR2 100152 195 #define GLU_TESS_ERROR3 100153 196 #define GLU_TESS_ERROR4 100154 197 #define GLU_TESS_ERROR5 100155 198 #define GLU_TESS_ERROR6 100156 199 #define GLU_TESS_ERROR7 100157 200 #define GLU_TESS_ERROR8 100158 201 #define GLU_TESS_MISSING_BEGIN_POLYGON 100151 202 #define GLU_TESS_MISSING_BEGIN_CONTOUR 100152 203 #define GLU_TESS_MISSING_END_POLYGON 100153 204 #define GLU_TESS_MISSING_END_CONTOUR 100154 205 #define GLU_TESS_COORD_TOO_LARGE 100155 206 #define GLU_TESS_NEED_COMBINE_CALLBACK 100156 207 208 /* TessWinding */ 209 #define GLU_TESS_WINDING_ODD 100130 210 #define GLU_TESS_WINDING_NONZERO 100131 211 #define GLU_TESS_WINDING_POSITIVE 100132 212 #define GLU_TESS_WINDING_NEGATIVE 100133 213 #define GLU_TESS_WINDING_ABS_GEQ_TWO 100134 214 215 /*************************************************************/ 216 217 218 #ifdef __cplusplus 219 class GLUnurbs; 220 class GLUquadric; 221 class GLUtesselator; 222 223 typedef class GLUnurbs GLUnurbsObj; 224 typedef class GLUquadric GLUquadricObj; 225 typedef class GLUtesselator GLUtesselatorObj; 226 typedef class GLUtesselator GLUtriangulatorObj; 227 #else 228 typedef struct GLUnurbs GLUnurbs; 229 typedef struct GLUquadric GLUquadric; 230 typedef struct GLUtesselator GLUtesselator; 231 232 typedef struct GLUnurbs GLUnurbsObj; 233 typedef struct GLUquadric GLUquadricObj; 234 typedef struct GLUtesselator GLUtesselatorObj; 235 typedef struct GLUtesselator GLUtriangulatorObj; 236 #endif 237 238 #define GLU_TESS_MAX_COORD 1.0e150 239 240 extern void gluBeginCurve (GLUnurbs* nurb); 241 extern void gluBeginPolygon (GLUtesselator* tess); 242 extern void gluBeginSurface (GLUnurbs* nurb); 243 extern void gluBeginTrim (GLUnurbs* nurb); 244 extern GLint gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); 245 extern GLint gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); 246 extern GLint gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); 247 extern GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data); 248 extern GLint gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); 249 extern GLint gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); 250 extern GLboolean gluCheckExtension (const GLubyte *extName, const GLubyte *extString); 251 extern void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks); 252 extern void gluDeleteNurbsRenderer (GLUnurbs* nurb); 253 extern void gluDeleteQuadric (GLUquadric* quad); 254 extern void gluDeleteTess (GLUtesselator* tess); 255 extern void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops); 256 extern void gluEndCurve (GLUnurbs* nurb); 257 extern void gluEndPolygon (GLUtesselator* tess); 258 extern void gluEndSurface (GLUnurbs* nurb); 259 extern void gluEndTrim (GLUnurbs* nurb); 260 extern const GLubyte * gluErrorString (GLenum error); 261 extern void gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data); 262 extern const GLubyte * gluGetString (GLenum name); 263 extern void gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data); 264 extern void gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view); 265 extern void gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); 266 extern GLUnurbs* gluNewNurbsRenderer (void); 267 extern GLUquadric* gluNewQuadric (void); 268 extern GLUtesselator* gluNewTess (void); 269 extern void gluNextContour (GLUtesselator* tess, GLenum type); 270 extern void gluNurbsCallback (GLUnurbs* nurb, GLenum which, GLvoid (*CallBackFunc)()); 271 extern void gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData); 272 extern void gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData); 273 extern void gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type); 274 extern void gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value); 275 extern void gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type); 276 extern void gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); 277 extern void gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep); 278 extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); 279 extern void gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport); 280 extern GLint gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ); 281 extern void gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type); 282 extern void gluQuadricCallback (GLUquadric* quad, GLenum which, GLvoid (*CallBackFunc)()); 283 extern void gluQuadricDrawStyle (GLUquadric* quad, GLenum draw); 284 extern void gluQuadricNormals (GLUquadric* quad, GLenum normal); 285 extern void gluQuadricOrientation (GLUquadric* quad, GLenum orientation); 286 extern void gluQuadricTexture (GLUquadric* quad, GLboolean texture); 287 extern GLint gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut); 288 extern void gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks); 289 extern void gluTessBeginContour (GLUtesselator* tess); 290 extern void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data); 291 extern void gluTessCallback (GLUtesselator* tess, GLenum which, GLvoid (*CallBackFunc)()); 292 extern void gluTessEndContour (GLUtesselator* tess); 293 extern void gluTessEndPolygon (GLUtesselator* tess); 294 extern void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); 295 extern void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data); 296 extern void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data); 297 extern GLint gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); 298 extern GLint gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble near, GLdouble far, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); 299 300 #ifdef __cplusplus 301 } 302 #endif 303 304 #endif /* __glu_h__ */ 305