GLU.H
上传用户:tengyuc
上传日期:2007-08-14
资源大小:722k
文件大小:18k
- /*++ BUILD Version: 0004 // Increment this if a change has global effects
- Copyright (c) 1985-95, Microsoft Corporation
- Module Name:
- glu.h
- Abstract:
- Procedure declarations, constant definitions and macros for the OpenGL
- Utility Library.
- --*/
- #ifndef __glu_h__
- #ifndef __GLU_H__
- #define __glu_h__
- #define __GLU_H__
- #include <GL/gl.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- ** Copyright 1991-1993, Silicon Graphics, Inc.
- ** All Rights Reserved.
- **
- ** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- ** the contents of this file may not be disclosed to third parties, copied or
- ** duplicated in any form, in whole or in part, without the prior written
- ** permission of Silicon Graphics, Inc.
- **
- ** RESTRICTED RIGHTS LEGEND:
- ** Use, duplication or disclosure by the Government is subject to restrictions
- ** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- ** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- ** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- ** rights reserved under the Copyright Laws of the United States.
- */
- /*
- ** Return the error string associated with a particular error code.
- ** This will return 0 for an invalid error code.
- **
- ** The generic function prototype that can be compiled for ANSI or Unicode
- ** is defined as follows:
- **
- ** LPCTSTR APIENTRY gluErrorStringWIN (GLenum errCode);
- */
- #ifdef UNICODE
- #define gluErrorStringWIN(errCode) ((LPCSTR) gluErrorUnicodeStringEXT(errCode))
- #else
- #define gluErrorStringWIN(errCode) ((LPCWSTR) gluErrorString(errCode))
- #endif
- const GLubyte* APIENTRY gluErrorString (
- GLenum errCode);
- const wchar_t* APIENTRY gluErrorUnicodeStringEXT (
- GLenum errCode);
- const GLubyte* APIENTRY gluGetString (
- GLenum name);
- void APIENTRY gluOrtho2D (
- GLdouble left,
- GLdouble right,
- GLdouble bottom,
- GLdouble top);
- void APIENTRY gluPerspective (
- GLdouble fovy,
- GLdouble aspect,
- GLdouble zNear,
- GLdouble zFar);
- void APIENTRY gluPickMatrix (
- GLdouble x,
- GLdouble y,
- GLdouble width,
- GLdouble height,
- GLint viewport[4]);
- void APIENTRY gluLookAt (
- GLdouble eyex,
- GLdouble eyey,
- GLdouble eyez,
- GLdouble centerx,
- GLdouble centery,
- GLdouble centerz,
- GLdouble upx,
- GLdouble upy,
- GLdouble upz);
- int APIENTRY gluProject (
- GLdouble objx,
- GLdouble objy,
- GLdouble objz,
- const GLdouble modelMatrix[16],
- const GLdouble projMatrix[16],
- const GLint viewport[4],
- GLdouble *winx,
- GLdouble *winy,
- GLdouble *winz);
- int APIENTRY gluUnProject (
- GLdouble winx,
- GLdouble winy,
- GLdouble winz,
- const GLdouble modelMatrix[16],
- const GLdouble projMatrix[16],
- const GLint viewport[4],
- GLdouble *objx,
- GLdouble *objy,
- GLdouble *objz);
- int APIENTRY gluScaleImage (
- GLenum format,
- GLint widthin,
- GLint heightin,
- GLenum typein,
- const void *datain,
- GLint widthout,
- GLint heightout,
- GLenum typeout,
- void *dataout);
- int APIENTRY gluBuild1DMipmaps (
- GLenum target,
- GLint components,
- GLint width,
- GLenum format,
- GLenum type,
- const void *data);
- int APIENTRY gluBuild2DMipmaps (
- GLenum target,
- GLint components,
- GLint width,
- GLint height,
- GLenum format,
- GLenum type,
- const void *data);
- #ifdef __cplusplus
- class GLUnurbs;
- class GLUquadric;
- class GLUtesselator;
- /* backwards compatibility: */
- typedef class GLUnurbs GLUnurbsObj;
- typedef class GLUquadric GLUquadricObj;
- typedef class GLUtesselator GLUtesselatorObj;
- typedef class GLUtesselator GLUtriangulatorObj;
- #else
- typedef struct GLUnurbs GLUnurbs;
- typedef struct GLUquadric GLUquadric;
- typedef struct GLUtesselator GLUtesselator;
- /* backwards compatibility: */
- typedef struct GLUnurbs GLUnurbsObj;
- typedef struct GLUquadric GLUquadricObj;
- typedef struct GLUtesselator GLUtesselatorObj;
- typedef struct GLUtesselator GLUtriangulatorObj;
- #endif
- GLUquadric* APIENTRY gluNewQuadric (void);
- void APIENTRY gluDeleteQuadric (
- GLUquadric *state);
- void APIENTRY gluQuadricNormals (
- GLUquadric *quadObject,
- GLenum normals);
- void APIENTRY gluQuadricTexture (
- GLUquadric *quadObject,
- GLboolean textureCoords);
- void APIENTRY gluQuadricOrientation (
- GLUquadric *quadObject,
- GLenum orientation);
- void APIENTRY gluQuadricDrawStyle (
- GLUquadric *quadObject,
- GLenum drawStyle);
- void APIENTRY gluCylinder (
- GLUquadric *qobj,
- GLdouble baseRadius,
- GLdouble topRadius,
- GLdouble height,
- GLint slices,
- GLint stacks);
- void APIENTRY gluDisk (
- GLUquadric *qobj,
- GLdouble innerRadius,
- GLdouble outerRadius,
- GLint slices,
- GLint loops);
- void APIENTRY gluPartialDisk (
- GLUquadric *qobj,
- GLdouble innerRadius,
- GLdouble outerRadius,
- GLint slices,
- GLint loops,
- GLdouble startAngle,
- GLdouble sweepAngle);
- void APIENTRY gluSphere (
- GLUquadric *qobj,
- GLdouble radius,
- GLint slices,
- GLint stacks);
- void APIENTRY gluQuadricCallback (
- GLUquadric *qobj,
- GLenum which,
- void (CALLBACK* fn)());
- GLUtesselator* APIENTRY gluNewTess(
- void );
- void APIENTRY gluDeleteTess(
- GLUtesselator *tess );
- void APIENTRY gluTessBeginPolygon(
- GLUtesselator *tess,
- void *polygon_data );
- void APIENTRY gluTessBeginContour(
- GLUtesselator *tess );
- void APIENTRY gluTessVertex(
- GLUtesselator *tess,
- GLdouble coords[3],
- void *data );
- void APIENTRY gluTessEndContour(
- GLUtesselator *tess );
- void APIENTRY gluTessEndPolygon(
- GLUtesselator *tess );
- void APIENTRY gluTessProperty(
- GLUtesselator *tess,
- GLenum which,
- GLdouble value );
-
- void APIENTRY gluTessNormal(
- GLUtesselator *tess,
- GLdouble x,
- GLdouble y,
- GLdouble z );
- void APIENTRY gluTessCallback(
- GLUtesselator *tess,
- GLenum which,
- void (CALLBACK *fn)());
- void APIENTRY gluGetTessProperty(
- GLUtesselator *tess,
- GLenum which,
- GLdouble *value );
-
- GLUnurbs* APIENTRY gluNewNurbsRenderer (void);
- void APIENTRY gluDeleteNurbsRenderer (
- GLUnurbs *nobj);
- void APIENTRY gluBeginSurface (
- GLUnurbs *nobj);
- void APIENTRY gluBeginCurve (
- GLUnurbs *nobj);
- void APIENTRY gluEndCurve (
- GLUnurbs *nobj);
- void APIENTRY gluEndSurface (
- GLUnurbs *nobj);
- void APIENTRY gluBeginTrim (
- GLUnurbs *nobj);
- void APIENTRY gluEndTrim (
- GLUnurbs *nobj);
- void APIENTRY gluPwlCurve (
- GLUnurbs *nobj,
- GLint count,
- GLfloat *array,
- GLint stride,
- GLenum type);
- void APIENTRY gluNurbsCurve (
- GLUnurbs *nobj,
- GLint nknots,
- GLfloat *knot,
- GLint stride,
- GLfloat *ctlarray,
- GLint order,
- GLenum type);
- void APIENTRY
- gluNurbsSurface(
- GLUnurbs *nobj,
- GLint sknot_count,
- float *sknot,
- GLint tknot_count,
- GLfloat *tknot,
- GLint s_stride,
- GLint t_stride,
- GLfloat *ctlarray,
- GLint sorder,
- GLint torder,
- GLenum type);
- void APIENTRY
- gluLoadSamplingMatrices (
- GLUnurbs *nobj,
- const GLfloat modelMatrix[16],
- const GLfloat projMatrix[16],
- const GLint viewport[4] );
- void APIENTRY
- gluNurbsProperty (
- GLUnurbs *nobj,
- GLenum property,
- GLfloat value );
- void APIENTRY
- gluGetNurbsProperty (
- GLUnurbs *nobj,
- GLenum property,
- GLfloat *value );
- void APIENTRY
- gluNurbsCallback (
- GLUnurbs *nobj,
- GLenum which,
- void (CALLBACK* fn)() );
- /**** Callback function prototypes ****/
- /* gluQuadricCallback */
- typedef void (CALLBACK* GLUquadricErrorProc) (GLenum);
- /* gluTessCallback */
- typedef void (CALLBACK* GLUtessBeginProc) (GLenum);
- typedef void (CALLBACK* GLUtessEdgeFlagProc) (GLboolean);
- typedef void (CALLBACK* GLUtessVertexProc) (void *);
- typedef void (CALLBACK* GLUtessEndProc) (void);
- typedef void (CALLBACK* GLUtessErrorProc) (GLenum);
- typedef void (CALLBACK* GLUtessCombineProc) (GLdouble[3],
- void*[4],
- GLfloat[4],
- void** );
- typedef void (CALLBACK* GLUtessBeginDataProc) (GLenum, void *);
- typedef void (CALLBACK* GLUtessEdgeFlagDataProc) (GLboolean, void *);
- typedef void (CALLBACK* GLUtessVertexDataProc) (void *, void *);
- typedef void (CALLBACK* GLUtessEndDataProc) (void *);
- typedef void (CALLBACK* GLUtessErrorDataProc) (GLenum, void *);
- typedef void (CALLBACK* GLUtessCombineDataProc) (GLdouble[3],
- void*[4],
- GLfloat[4],
- void**,
- void* );
- /* gluNurbsCallback */
- typedef void (CALLBACK* GLUnurbsErrorProc) (GLenum);
- /**** Generic constants ****/
- /* Version */
- #define GLU_VERSION_1_1 1
- #define GLU_VERSION_1_2 1
- /* Errors: (return value 0 = no error) */
- #define GLU_INVALID_ENUM 100900
- #define GLU_INVALID_VALUE 100901
- #define GLU_OUT_OF_MEMORY 100902
- #define GLU_INCOMPATIBLE_GL_VERSION 100903
- /* StringName */
- #define GLU_VERSION 100800
- #define GLU_EXTENSIONS 100801
- /* Boolean */
- #define GLU_TRUE GL_TRUE
- #define GLU_FALSE GL_FALSE
- /**** Quadric constants ****/
- /* QuadricNormal */
- #define GLU_SMOOTH 100000
- #define GLU_FLAT 100001
- #define GLU_NONE 100002
- /* QuadricDrawStyle */
- #define GLU_POINT 100010
- #define GLU_LINE 100011
- #define GLU_FILL 100012
- #define GLU_SILHOUETTE 100013
- /* QuadricOrientation */
- #define GLU_OUTSIDE 100020
- #define GLU_INSIDE 100021
- /* Callback types: */
- /* GLU_ERROR 100103 */
- /**** Tesselation constants ****/
- #define GLU_TESS_MAX_COORD 1.0e150
- /* TessProperty */
- #define GLU_TESS_WINDING_RULE 100140
- #define GLU_TESS_BOUNDARY_ONLY 100141
- #define GLU_TESS_TOLERANCE 100142
- /* TessWinding */
- #define GLU_TESS_WINDING_ODD 100130
- #define GLU_TESS_WINDING_NONZERO 100131
- #define GLU_TESS_WINDING_POSITIVE 100132
- #define GLU_TESS_WINDING_NEGATIVE 100133
- #define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
- /* TessCallback */
- #define GLU_TESS_BEGIN 100100 /* void (CALLBACK*)(GLenum type) */
- #define GLU_TESS_VERTEX 100101 /* void (CALLBACK*)(void *data) */
- #define GLU_TESS_END 100102 /* void (CALLBACK*)(void) */
- #define GLU_TESS_ERROR 100103 /* void (CALLBACK*)(GLenum errno) */
- #define GLU_TESS_EDGE_FLAG 100104 /* void (CALLBACK*)(GLboolean boundaryEdge) */
- #define GLU_TESS_COMBINE 100105 /* void (CALLBACK*)(GLdouble coords[3],
- void *data[4],
- GLfloat weight[4],
- void **dataOut) */
- #define GLU_TESS_BEGIN_DATA 100106 /* void (CALLBACK*)(GLenum type,
- void *polygon_data) */
- #define GLU_TESS_VERTEX_DATA 100107 /* void (CALLBACK*)(void *data,
- void *polygon_data) */
- #define GLU_TESS_END_DATA 100108 /* void (CALLBACK*)(void *polygon_data) */
- #define GLU_TESS_ERROR_DATA 100109 /* void (CALLBACK*)(GLenum errno,
- void *polygon_data) */
- #define GLU_TESS_EDGE_FLAG_DATA 100110 /* void (CALLBACK*)(GLboolean boundaryEdge,
- void *polygon_data) */
- #define GLU_TESS_COMBINE_DATA 100111 /* void (CALLBACK*)(GLdouble coords[3],
- void *data[4],
- GLfloat weight[4],
- void **dataOut,
- void *polygon_data) */
- /* TessError */
- #define GLU_TESS_ERROR1 100151
- #define GLU_TESS_ERROR2 100152
- #define GLU_TESS_ERROR3 100153
- #define GLU_TESS_ERROR4 100154
- #define GLU_TESS_ERROR5 100155
- #define GLU_TESS_ERROR6 100156
- #define GLU_TESS_ERROR7 100157
- #define GLU_TESS_ERROR8 100158
- #define GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_ERROR1
- #define GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_ERROR2
- #define GLU_TESS_MISSING_END_POLYGON GLU_TESS_ERROR3
- #define GLU_TESS_MISSING_END_CONTOUR GLU_TESS_ERROR4
- #define GLU_TESS_COORD_TOO_LARGE GLU_TESS_ERROR5
- #define GLU_TESS_NEED_COMBINE_CALLBACK GLU_TESS_ERROR6
- /**** NURBS constants ****/
- /* NurbsProperty */
- #define GLU_AUTO_LOAD_MATRIX 100200
- #define GLU_CULLING 100201
- #define GLU_SAMPLING_TOLERANCE 100203
- #define GLU_DISPLAY_MODE 100204
- #define GLU_PARAMETRIC_TOLERANCE 100202
- #define GLU_SAMPLING_METHOD 100205
- #define GLU_U_STEP 100206
- #define GLU_V_STEP 100207
- /* NurbsSampling */
- #define GLU_PATH_LENGTH 100215
- #define GLU_PARAMETRIC_ERROR 100216
- #define GLU_DOMAIN_DISTANCE 100217
- /* NurbsTrim */
- #define GLU_MAP1_TRIM_2 100210
- #define GLU_MAP1_TRIM_3 100211
- /* NurbsDisplay */
- /* GLU_FILL 100012 */
- #define GLU_OUTLINE_POLYGON 100240
- #define GLU_OUTLINE_PATCH 100241
- /* NurbsCallback */
- /* GLU_ERROR 100103 */
- /* NurbsErrors */
- #define GLU_NURBS_ERROR1 100251
- #define GLU_NURBS_ERROR2 100252
- #define GLU_NURBS_ERROR3 100253
- #define GLU_NURBS_ERROR4 100254
- #define GLU_NURBS_ERROR5 100255
- #define GLU_NURBS_ERROR6 100256
- #define GLU_NURBS_ERROR7 100257
- #define GLU_NURBS_ERROR8 100258
- #define GLU_NURBS_ERROR9 100259
- #define GLU_NURBS_ERROR10 100260
- #define GLU_NURBS_ERROR11 100261
- #define GLU_NURBS_ERROR12 100262
- #define GLU_NURBS_ERROR13 100263
- #define GLU_NURBS_ERROR14 100264
- #define GLU_NURBS_ERROR15 100265
- #define GLU_NURBS_ERROR16 100266
- #define GLU_NURBS_ERROR17 100267
- #define GLU_NURBS_ERROR18 100268
- #define GLU_NURBS_ERROR19 100269
- #define GLU_NURBS_ERROR20 100270
- #define GLU_NURBS_ERROR21 100271
- #define GLU_NURBS_ERROR22 100272
- #define GLU_NURBS_ERROR23 100273
- #define GLU_NURBS_ERROR24 100274
- #define GLU_NURBS_ERROR25 100275
- #define GLU_NURBS_ERROR26 100276
- #define GLU_NURBS_ERROR27 100277
- #define GLU_NURBS_ERROR28 100278
- #define GLU_NURBS_ERROR29 100279
- #define GLU_NURBS_ERROR30 100280
- #define GLU_NURBS_ERROR31 100281
- #define GLU_NURBS_ERROR32 100282
- #define GLU_NURBS_ERROR33 100283
- #define GLU_NURBS_ERROR34 100284
- #define GLU_NURBS_ERROR35 100285
- #define GLU_NURBS_ERROR36 100286
- #define GLU_NURBS_ERROR37 100287
- /**** Backwards compatibility for old tesselator ****/
- void APIENTRY gluBeginPolygon( GLUtesselator *tess );
- void APIENTRY gluNextContour( GLUtesselator *tess,
- GLenum type );
- void APIENTRY gluEndPolygon( GLUtesselator *tess );
- /* Contours types -- obsolete! */
- #define GLU_CW 100120
- #define GLU_CCW 100121
- #define GLU_INTERIOR 100122
- #define GLU_EXTERIOR 100123
- #define GLU_UNKNOWN 100124
- /* Names without "TESS_" prefix */
- #define GLU_BEGIN GLU_TESS_BEGIN
- #define GLU_VERTEX GLU_TESS_VERTEX
- #define GLU_END GLU_TESS_END
- #define GLU_ERROR GLU_TESS_ERROR
- #define GLU_EDGE_FLAG GLU_TESS_EDGE_FLAG
- #ifdef __cplusplus
- }
- #endif
- #endif /* __GLU_H__ */
- #endif /* __glu_h__ */