Unit RHGLU

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.

Classes

Functions

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 -

Types

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

Constants

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

Variables


Functions


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;


Types


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;

Constants

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


Variables