Renamed from GLU.pas 6/14/1998 Paul Rice to avoid conflicts with others' work. // This translataion for Delphi 32 bit provided courtesy of: // Artemis Alliance, Inc. 289 E. 5th St, #211 St. Paul, Mn 55101 (612) 227-7172 71043.2142@compuserve.com // Custom software development, specializing in Delphi and CAD. // // ********************************************************************* // NOTE : If you find any errors or omissions please email them to Richard Hansen at : // 71043.2142@compuserve.com or 70242.3367@compuserve.com // Any future updates will be placed on the BDELPHI32 forum on CompuServe. // // ********************************************************************* HISTORY ********************************************************************* 03/25/96 First translation RWH // // ********************************************************************* (*++ 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.
--*) (*
** 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.
gluBeginCurve -
gluBeginSurface -
gluBeginTrim -
gluBuild1DMipmaps -
gluBuild2DMipmaps -
gluCylinder -
gluDeleteNurbsRenderer -
gluDeleteQuadric -
gluDeleteTess -
gluDisk -
gluEndCurve -
gluEndSurface -
gluEndTrim -
gluErrorString -
gluErrorUnicodeStringEXT -
gluGetNurbsProperty -
gluGetString -
gluGetTessProperty -
gluLoadSamplingMatrices -
gluLookAt -
gluNewNurbsRenderer -
gluNewQuadric -
gluNewTess -
gluNurbsCallback -
gluNurbsCurve -
gluNurbsProperty -
gluNurbsSurface -
gluOrtho2D -
gluPartialDisk -
gluPerspective -
gluPickMatrix -
gluProject -
gluPwlCurve -
gluQuadricCallback -
gluQuadricDrawStyle -
gluQuadricNormals -
gluQuadricOrientation -
gluQuadricTexture -
gluScaleImage -
gluSphere -
gluTessBeginContour -
gluTessBeginPolygon -
gluTessCallback -
gluTessEndContour -
gluTessEndPolygon -
gluTessNormal -
gluTessProperty -
gluTessVertex -
gluUnProject -
PGLUnurbsObj
PGLUquadricObj
PGLUtesselator
T4FloatArray
T4PointerArray
TCoordArray
TGLNurbsErrorProc
TGLQuadricErrorProc
TGLUnurbsObj
TGLUquadricObj
TGLUtessBeginDataProc
TGLUtessBeginProc
TGLUtessCombineDataProc
TGLUtessCombineProc
TGLUtessEdgeFlagDataProc
TGLUtessEdgeFlagProc
TGLUtesselator
TGLUtessEndDataProc
TGLUtessEndProc
TGLUtessErrorDataProc
TGLUtessErrorProc
TGLUtessVertexDataProc
TGLUtessVertexProc
TMatrixDblArray
TMatrixFltArray
TViewPortArray
GLU_AUTO_LOAD_MATRIX
GLU_BEGIN
GLU_CULLING
GLU_DISPLAY_MODE
GLU_DOMAIN_DISTANCE
GLU_EDGE_FLAG
GLU_END
GLU_ERROR
GLU_EXTENSIONS
GLU_FALSE
GLU_FILL
GLU_FLAT
GLU_INCOMPATIBLE_GL_VERSION
GLU_INSIDE
GLU_INVALID_ENUM
GLU_INVALID_VALUE
GLU_LINE
GLU_MAP1_TRIM_2
GLU_MAP1_TRIM_3
GLU_NONE
GLU_NURBS_ERROR1
GLU_NURBS_ERROR10
GLU_NURBS_ERROR11
GLU_NURBS_ERROR12
GLU_NURBS_ERROR13
GLU_NURBS_ERROR14
GLU_NURBS_ERROR15
GLU_NURBS_ERROR16
GLU_NURBS_ERROR17
GLU_NURBS_ERROR18
GLU_NURBS_ERROR19
GLU_NURBS_ERROR2
GLU_NURBS_ERROR20
GLU_NURBS_ERROR21
GLU_NURBS_ERROR22
GLU_NURBS_ERROR23
GLU_NURBS_ERROR24
GLU_NURBS_ERROR25
GLU_NURBS_ERROR26
GLU_NURBS_ERROR27
GLU_NURBS_ERROR28
GLU_NURBS_ERROR29
GLU_NURBS_ERROR3
GLU_NURBS_ERROR30
GLU_NURBS_ERROR31
GLU_NURBS_ERROR32
GLU_NURBS_ERROR33
GLU_NURBS_ERROR34
GLU_NURBS_ERROR35
GLU_NURBS_ERROR36
GLU_NURBS_ERROR37
GLU_NURBS_ERROR4
GLU_NURBS_ERROR5
GLU_NURBS_ERROR6
GLU_NURBS_ERROR7
GLU_NURBS_ERROR8
GLU_NURBS_ERROR9
GLU_OUTLINE_PATCH
GLU_OUTLINE_POLYGON
GLU_OUTSIDE
GLU_OUT_OF_MEMORY
GLU_PARAMETRIC_ERROR
GLU_PARAMETRIC_TOLERANCE
GLU_PATH_LENGTH
GLU_POINT
GLU_SAMPLING_METHOD
GLU_SAMPLING_TOLERANCE
GLU_SILHOUETTE
GLU_SMOOTH
GLU_TESS_BEGIN
GLU_TESS_BEGIN_DATA
GLU_TESS_BOUNDARY_ONLY
GLU_TESS_COMBINE
GLU_TESS_COMBINE_DATA
GLU_TESS_COORD_TOO_LARGE
GLU_TESS_EDGE_FLAG
GLU_TESS_EDGE_FLAG_DATA
GLU_TESS_END
GLU_TESS_END_DATA
GLU_TESS_ERROR
GLU_TESS_ERROR1
GLU_TESS_ERROR2
GLU_TESS_ERROR3
GLU_TESS_ERROR4
GLU_TESS_ERROR5
GLU_TESS_ERROR6
GLU_TESS_ERROR7
GLU_TESS_ERROR8
GLU_TESS_ERROR_DATA
GLU_TESS_MAX_COORD
GLU_TESS_MISSING_BEGIN_CONTOUR
GLU_TESS_MISSING_BEGIN_POLYGON
GLU_TESS_MISSING_END_CONTOUR
GLU_TESS_MISSING_END_POLYGON
GLU_TESS_NEED_COMBINE_CALLBACK
GLU_TESS_TOLERANCE
GLU_TESS_VERTEX
GLU_TESS_VERTEX_DATA
GLU_TESS_WINDING_ABS_GEQ_TWO
GLU_TESS_WINDING_NEGATIVE
GLU_TESS_WINDING_NONZERO
GLU_TESS_WINDING_ODD
GLU_TESS_WINDING_POSITIVE
GLU_TESS_WINDING_RULE
GLU_TRUE
GLU_U_STEP
GLU_VERSION
GLU_VERSION_1_1
GLU_VERSION_1_2
GLU_VERTEX
GLU_V_STEP
Procedure gluBeginCurve(nobj: PGLUnurbsObj);
Procedure gluBeginSurface(nobj: PGLUnurbsObj);
Procedure gluBeginTrim(nobj: PGLUnurbsObj);
Function gluBuild1DMipmaps(target: GLenum; components: GLint; width: GLint; format: GLenum; atype: GLenum;
const data): INT;
Function gluBuild2DMipmaps(target: GLenum; components: GLint; width: GLint; height: GLint; format: GLenum; atype: GLenum;
const data): INT;
Procedure gluCylinder(qobj: PGLUquadricObj; baseRadius: GLdouble; topRadius: GLdouble; height: GLdouble;
slices: GLint; stacks: GLint);
Procedure gluDeleteNurbsRenderer(nobj: PGLUnurbsObj);
Procedure gluDeleteQuadric(state: PGLUquadricObj);
Procedure gluDeleteTess(tess: PGLUtesselator);
Procedure gluDisk(qobj: PGLUquadricObj; innerRadius: GLdouble; outerRadius: GLdouble; slices: GLint; loops: GLint);
Procedure gluEndCurve(nobj: PGLUnurbsObj);
Procedure gluEndSurface(nobj: PGLUnurbsObj);
Procedure gluEndTrim(nobj: PGLUnurbsObj);
Function gluErrorString(errCode: GLenum): PGLubyte;
Function gluErrorUnicodeStringEXT(errCode: GLenum): PWideChar;
Procedure gluGetNurbsProperty(nobj: PGLUnurbsObj; aproperty: GLenum; value: PGLfloat);
Function gluGetString(name: GLenum): PGLubyte;
Procedure gluGetTessProperty(tess: PGLUtesselator; which: GLenum; var value: GLdouble);
Procedure gluLoadSamplingMatrices(nobj: PGLUnurbsObj; const modelMatrix: TMatrixFltArray; const projMatrix: TMatrixFltArray;
const viewport: TViewPortArray);
Procedure gluLookAt(eyex: GLdouble; eyey: GLdouble; eyez: GLdouble; centerx: GLdouble; centery: GLdouble;
centerz: GLdouble; upx: GLdouble; upy: GLdouble; upz: GLdouble);
Function gluNewNurbsRenderer: PGLUnurbsObj;
Function gluNewQuadric: PGLUquadricObj;
Function gluNewTess: PGLUtesselator;
Procedure gluNurbsCallback(nobj: PGLUnurbsObj; which: GLenum; callback: TGLNurbsErrorProc);
Procedure gluNurbsCurve(nobj: PGLUnurbsObj; nknots: GLint; knot: PGLfloat; stride: GLint; ctlarray: PGLfloat;
order: GLint; atype: GLenum);
Procedure gluNurbsProperty(nobj: PGLUnurbsObj; aproperty: GLenum; value: GLfloat);
Procedure gluNurbsSurface(nobj: PGLUnurbsObj; sknot_count: GLint; sknot: PGLfloat; tknot_count: GLint; tknot: PGLfloat;
s_stride: GLint; t_stride: GLint; ctlarray: PGLfloat; sorder: GLint; torder: GLint; atype: GLenum);
Procedure gluOrtho2D(left: GLdouble; right: GLdouble; bottom: GLdouble; top: GLdouble);
Procedure gluPartialDisk(qobj: PGLUquadricObj; innerRadius: GLdouble; outerRadius: GLdouble; slices: GLint;
loops: GLint; startAngle: GLdouble; sweepAngle: GLdouble);
Procedure gluPerspective(fovy: GLdouble; aspect: GLdouble; zNear: GLdouble; zFar: GLdouble);
Procedure gluPickMatrix(x: GLdouble; y: GLdouble; width: GLdouble; height: GLdouble; viewport: TViewPortArray);
Function gluProject(objx: GLdouble; objy: GLdouble; objz: GLdouble; const modelMatrix: TMatrixDblArray;
const projMatrix: TMatrixDblArray; const viewport: TViewPortArray;
var winx: GLdouble; var winy: GLdouble; var winz: GLdouble): INT;
Procedure gluPwlCurve(nobj: PGLUnurbsObj; count: GLint; parray: PGLfloat; stride: GLint; atype: GLenum);
Procedure gluQuadricCallback(qobj: PGLUquadricObj; which: GLenum; callback: TGLQuadricErrorProc);
Procedure gluQuadricDrawStyle(quadObject: PGLUquadricObj; drawStyle: GLenum);
Procedure gluQuadricNormals(quadObject: PGLUquadricObj; normals: GLenum);
Procedure gluQuadricOrientation(quadObject: PGLUquadricObj; orientation: GLenum);
Procedure gluQuadricTexture(quadObject: PGLUquadricObj; textureCoords: GLboolean);
Function gluScaleImage(format: GLenum; widthin: GLint; heightin: GLint; typein: GLenum; const datain;
widthout: GLint; heightout: GLint; typeout: GLenum; var dataout): INT;
Procedure gluSphere(qobj: PGLUquadricObj; radius: GLdouble; slices: GLint; stacks: GLint);
Procedure gluTessBeginContour(tess: PGLUtesselator);
Procedure gluTessBeginPolygon(tess: PGLUtesselator; polygon_data: Pointer);
Procedure gluTessCallback(tess: PGLUtesselator; which: GLenum; callback: Pointer);
Procedure gluTessEndContour(tess: PGLUtesselator);
Procedure gluTessEndPolygon(tess: PGLUtesselator);
Procedure gluTessNormal(tess: PGLUtesselator; x: GLdouble; y: GLdouble; z: GLdouble);
Procedure gluTessProperty(tess: PGLUtesselator; which: GLenum; value: GLdouble);
Procedure gluTessVertex(tess: PGLUtesselator; var coords: TCoordArray; data: Pointer);
Function gluUnProject(winx: GLdouble; winy: GLdouble; winz: GLdouble; const modelMatrix: TMatrixDblArray;
const projMatrix: TMatrixDblArray; const viewport: TViewPortArray; var objx: GLdouble;
var objy: GLdouble; var objz: GLdouble): INT;
PGLUnurbsObj = ^TGLUnurbsObj
PGLUquadricObj = ^TGLUquadricObj
PGLUtesselator = ^TGLUtesselator
T4FloatArray = Array[0..3] of GLfloat;
T4PointerArray = Array[0..3] of Pointer;
TCoordArray = Array[0..2] of GLdouble;
TGLNurbsErrorProc = Procedure(errcode: GLenum)
gluNurbsCallback
TGLQuadricErrorProc = Procedure(errcode: GLenum)
gluQuadricCallback
TGLUnurbsObj = record
end;
TGLUquadricObj = record
end;
TGLUtessBeginDataProc = Procedure(atype: GLenum; polygon_data: Pointer)
TGLUtessBeginProc = Procedure(atype: GLenum)
gluTessCallback
TGLUtessCombineDataProc = Procedure(var coords: TCoordArray; var vertex_data: T4PointerArray;
var weight: T4FloatArray; var dataOut: Pointer; polygon_data: Pointer)
TGLUtessCombineProc = Procedure(var coords: TCoordArray; var vertex_data: T4PointerArray;
var weight: T4FloatArray; var dataOut: Pointer)
TGLUtessEdgeFlagDataProc = Procedure(flag: GLboolean; polygon_data: Pointer)
TGLUtessEdgeFlagProc = Procedure(flag: GLboolean)
TGLUtesselator = record
end;
TGLUtessEndDataProc = Procedure(polygon_data: Pointer)
TGLUtessEndProc = Procedure
TGLUtessErrorDataProc = Procedure(errno: GLenum; polygon_data: Pointer)
TGLUtessErrorProc = Procedure(errno: GLenum)
TGLUtessVertexDataProc = Procedure(vertex_data: Pointer; polygon_data: Pointer)
TGLUtessVertexProc = Procedure(vertex_data: Pointer)
TMatrixDblArray = Array[0..15] of GLdouble;
TMatrixFltArray = Array[0..15] of GLfloat;
TViewPortArray = Array[0..3] of GLint;
GLU_AUTO_LOAD_MATRIX = 100200
*** NURBS constants**** Properties:
GLU_BEGIN = GLU_TESS_BEGIN
*** Backwards compatibility for old tesselator *** (*
Type
GLUtriangulatorObj = GLUTESSELATOR;
procedure gluBeginPolygon(tess: PGLUTESSELATOR);
Procedure gluBeginPolygon( GLUtesselator *tess );
Procedure gluNextContour( GLUtesselator *tess;
GLenum type );
Procedure gluEndPolygon( GLUtesselator *tess );
*) Names without "TESS_" prefix
GLU_CULLING = 100201
GLU_DISPLAY_MODE = 100204
GLU_DOMAIN_DISTANCE = 100217
GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG
GLU_END = GLU_TESS_END
GLU_ERROR = GLU_TESS_ERROR
GLU_EXTENSIONS = 100801
GLU_FALSE = GL_FALSE
GLU_FILL = 100012
GLU_FLAT = 100001
GLU_INCOMPATIBLE_GL_VERSION = 100903
GLU_INSIDE = 100021
GLU_INVALID_ENUM = 100900
Errors:(return value 0 = no error
GLU_INVALID_VALUE = 100901
GLU_LINE = 100011
GLU_MAP1_TRIM_2 = 100210
Trimming curve types
GLU_MAP1_TRIM_3 = 100211
GLU_NONE = 100002
GLU_NURBS_ERROR1 = 100251
Callbacks: GLU_ERROR 100103 Errors:
GLU_NURBS_ERROR10 = 100260
GLU_NURBS_ERROR11 = 100261
GLU_NURBS_ERROR12 = 100262
GLU_NURBS_ERROR13 = 100263
GLU_NURBS_ERROR14 = 100264
GLU_NURBS_ERROR15 = 100265
GLU_NURBS_ERROR16 = 100266
GLU_NURBS_ERROR17 = 100267
GLU_NURBS_ERROR18 = 100268
GLU_NURBS_ERROR19 = 100269
GLU_NURBS_ERROR2 = 100252
GLU_NURBS_ERROR20 = 100270
GLU_NURBS_ERROR21 = 100271
GLU_NURBS_ERROR22 = 100272
GLU_NURBS_ERROR23 = 100273
GLU_NURBS_ERROR24 = 100274
GLU_NURBS_ERROR25 = 100275
GLU_NURBS_ERROR26 = 100276
GLU_NURBS_ERROR27 = 100277
GLU_NURBS_ERROR28 = 100278
GLU_NURBS_ERROR29 = 100279
GLU_NURBS_ERROR3 = 100253
GLU_NURBS_ERROR30 = 100280
GLU_NURBS_ERROR31 = 100281
GLU_NURBS_ERROR32 = 100282
GLU_NURBS_ERROR33 = 100283
GLU_NURBS_ERROR34 = 100284
GLU_NURBS_ERROR35 = 100285
GLU_NURBS_ERROR36 = 100286
GLU_NURBS_ERROR37 = 100287
GLU_NURBS_ERROR4 = 100254
GLU_NURBS_ERROR5 = 100255
GLU_NURBS_ERROR6 = 100256
GLU_NURBS_ERROR7 = 100257
GLU_NURBS_ERROR8 = 100258
GLU_NURBS_ERROR9 = 100259
GLU_OUTLINE_PATCH = 100241
GLU_OUTLINE_POLYGON = 100240
Display modes: GLU_FILL 100012
GLU_OUTSIDE = 100020
Orientation types:
GLU_OUT_OF_MEMORY = 100902
GLU_PARAMETRIC_ERROR = 100216
GLU_PARAMETRIC_TOLERANCE = 100202
GLU_PATH_LENGTH = 100215
Sampling methods:
GLU_POINT = 100010
DrawStyle types:
GLU_SAMPLING_METHOD = 100205
GLU_SAMPLING_TOLERANCE = 100203
GLU_SILHOUETTE = 100013
GLU_SMOOTH = 100000
*** Quadric constants **** Types of normals:
GLU_TESS_BEGIN = 100100
Callback types:
GLU_TESS_BEGIN_DATA = 100106
void(CALLBACK* )(GLdouble coords[3];
void *data[4];
GLfloat weight[4];
void **dataOut
GLU_TESS_BOUNDARY_ONLY = 100141
GLU_TESS_COMBINE = 100105
void(CALLBACK* )(GLboolean boundaryEdge
GLU_TESS_COMBINE_DATA = 100111
void(CALLBACK*)(GLboolean boundaryEdge;
void *polygon_data
GLU_TESS_COORD_TOO_LARGE = GLU_TESS_ERROR5
GLU_TESS_EDGE_FLAG = 100104
void(CALLBACK* )(GLenum errno
GLU_TESS_EDGE_FLAG_DATA = 100110
void(CALLBACK*)(GLenum errno;
void *polygon_data
GLU_TESS_END = 100102
void(CALLBACK* )(void*data
GLU_TESS_END_DATA = 100108
void(CALLBACK*)(void *data;
void *polygon_data
GLU_TESS_ERROR = 100103
void(CALLBACK* )(void
GLU_TESS_ERROR1 = 100151
void(CALLBACK*)(GLdouble coords[3];
void *data[4];
GLfloat weight[4];
void **dataOut;
void *polygon_data)} // Errors:
GLU_TESS_ERROR2 = 100152
GLU_TESS_ERROR3 = 100153
GLU_TESS_ERROR4 = 100154
GLU_TESS_ERROR5 = 100155
GLU_TESS_ERROR6 = 100156
GLU_TESS_ERROR7 = 100157
GLU_TESS_ERROR8 = 100158
GLU_TESS_ERROR_DATA = 100109
void(CALLBACK*)(void *polygon_data
GLU_TESS_MAX_COORD = 1.0e150
Callback types: (*GLU_ERROR 100103*) *** Tesselation constants****/
GLU_TESS_MISSING_BEGIN_CONTOUR = GLU_TESS_ERROR2
GLU_TESS_MISSING_BEGIN_POLYGON = GLU_TESS_ERROR1
GLU_TESS_MISSING_END_CONTOUR = GLU_TESS_ERROR4
GLU_TESS_MISSING_END_POLYGON = GLU_TESS_ERROR3
GLU_TESS_NEED_COMBINE_CALLBACK = GLU_TESS_ERROR6
GLU_TESS_TOLERANCE = 100142
GLU_TESS_VERTEX = 100101
void(CALLBACK* )(GLenum type
GLU_TESS_VERTEX_DATA = 100107
void(CALLBACK*)(GLenum type;
void *polygon_data
GLU_TESS_WINDING_ABS_GEQ_TWO = 100134
GLU_TESS_WINDING_NEGATIVE = 100133
GLU_TESS_WINDING_NONZERO = 100131
GLU_TESS_WINDING_ODD = 100130
Possible winding rules:
GLU_TESS_WINDING_POSITIVE = 100132
GLU_TESS_WINDING_RULE = 100140
Property types:
GLU_TRUE = GL_TRUE
For laughs:
GLU_U_STEP = 100206
GLU_VERSION = 100800
gets
GLU_VERSION_1_1 = 1
*** Generic constants
GLU_VERSION_1_2 = 1
GLU_VERTEX = GLU_TESS_VERTEX
GLU_V_STEP = 100207