Unit GLU

•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• // This translation of GLU.H (v1.2) for OpenGL (version 1.1) for Delphi 2.0+ has been done by: // Dipl. Ing. Mike Lischke Straίe der Nationen 39 09111 Chemnitz Germany // under consideration of previous translation by // Richard Hansen // Artemis Alliance, Inc. 289 E. 5th St, #211 St. Paul, Mn 55101 (612) 227-7172 71043.2142@compuserve.com // // You may use and distribute it freely for noncommercial use only! Please, do not change the file, but rather send any errors or omissions to // Lischke@imib.med.tu-dresden.de // March, 23 1997 •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• {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 -
gluBeginPolygon - •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• Backwards compatibility for old tesselator
gluBeginSurface -
gluBeginTrim -
gluBuild1DMipmaps -
gluBuild2DMipmaps -
gluCylinder -
gluDeleteNurbsRenderer -
gluDeleteQuadric -
gluDeleteTess -
gluDisk -
gluEndCurve -
gluEndPolygon -
gluEndSurface -
gluEndTrim -
gluErrorString - ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
gluErrorUnicodeStringEXT -
gluGetNurbsProperty -
gluGetString -
gluGetTessProperty -
gluLoadSamplingMatrices -
gluLookAt -
gluNewNurbsRenderer -
gluNewQuadric -
gluNewTess -
gluNextContour -
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

GLUNurbsObj
GLUQuadricObj
GLUTesselatorObj
GLUTriangulatorObj
PGLUnurbsObj
PGLUquadricObj
PGLUtesselatorObj
PGLUtriangulatorObj
TAffineDblVector
TAffineFloatVector
TAffineIntVector
TGLUNurbsErrorProc
TGLUQuadricErrorProc
TGLUTessBeginDataProc
TGLUTessBeginProc
TGLUTessCombineDataProc
TGLUTessCombineProc
TGLUTessEdgeFlagDataProc
TGLUTessEdgeFlagProc
TGLUTesselationCallback
TGLUTessEndDataProc
TGLUTessEndProc
TGLUTessErrorDataProc
TGLUTessErrorProc
TGLUTessVertexDataProc
TGLUTessVertexProc
THomogenDblMatrix
THomogenDblVector
THomogenFloatMatrix
THomogenFloatVector
THomogenIntMatrix
THomogenIntVector
THomogenPtrVector

Constants

GLu32
GLU_AUTO_LOAD_MATRIX
GLU_BEGIN
GLU_CCW
GLU_CULLING
GLU_CW
GLU_DISPLAY_MODE
GLU_DOMAIN_DISTANCE
GLU_EDGE_FLAG
GLU_END
GLU_ERROR
GLU_EXTENSIONS
GLU_EXTERIOR
GLU_FALSE
GLU_FILL
GLU_FLAT
GLU_INCOMPATIBLE_GL_VERSION
GLU_INSIDE
GLU_INTERIOR
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_UNKNOWN
GLU_U_STEP
GLU_VERSION
GLU_VERTEX
GLU_V_STEP

Variables


Functions


PROCEDURE gluBeginCurve (nobj: PGLUnurbsObj);


PROCEDURE gluBeginPolygon(tess: PGLUtesselatorObj);

•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• Backwards compatibility for old tesselator

PROCEDURE gluBeginSurface(nobj: PGLUnurbsObj);


PROCEDURE gluBeginTrim(nobj: PGLUnurbsObj);


FUNCTION gluBuild1DMipmaps(target: GLenum; components, width: GLint; format, atype: GLenum; CONST data): GLint;


FUNCTION gluBuild2DMipmaps(target: GLenum; components, width, height: GLint; format, atype: GLenum; CONST data): GLint;


PROCEDURE gluCylinder(qobj: PGLuQuadricObj; baseRadius, topRadius, height: GLdouble; slices, stacks: GLint);


PROCEDURE gluDeleteNurbsRenderer(nobj: PGLUnurbsObj);


PROCEDURE gluDeleteQuadric(state: PGLUQuadricObj);


PROCEDURE gluDeleteTess(tess: PGLUtesselatorObj);


PROCEDURE gluDisk(qobj: PGLuQuadricObj; innerRadius, outerRadius: GLdouble; slices, loops: GLint);


PROCEDURE gluEndCurve(nobj: PGLUnurbsObj);


PROCEDURE gluEndPolygon(tess: PGLUtesselatorObj);


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: PGLUtesselatorObj; which: GLenum; value: PGLdouble);


PROCEDURE gluLoadSamplingMatrices(nobj: PGLUnurbsObj; CONST modelMatrix, projMatrix: THomogenFloatMatrix; CONST viewport: THomogenIntVector);


PROCEDURE gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz: GLdouble);


FUNCTION gluNewNurbsRenderer: PGLUnurbsObj;


FUNCTION gluNewQuadric: PGLUQuadricObj;


FUNCTION gluNewTess: PGLUtesselatorObj;


PROCEDURE gluNextContour(tess: PGLUtesselatorObj; atype: GLenum);


PROCEDURE gluNurbsCallback(nobj: PGLUnurbsObj; which: GLenum; fn: TGLUNurbsErrorProc);


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, t_stride: GLint; ctlarray: PGLfloat; sorder, torder: GLint; atype: GLenum);


PROCEDURE gluOrtho2D(left, right, bottom, top: GLdouble);


PROCEDURE gluPartialDisk(qobj: PGLuQuadricObj; innerRadius, outerRadius: GLdouble; slices, loops: GLint; startAngle, sweepAngle: GLdouble);


PROCEDURE gluPerspective(fovy, aspect, zNear, zFar: GLdouble);


PROCEDURE gluPickMatrix(x, y, width, height: GLdouble; viewport: THomogenIntVector);


FUNCTION gluProject(objx, objy, objz: GLdouble; modelMatrix, projMatrix: THomogenDblMatrix; viewport: THomogenIntVector; winx, winy, winz: PGLdouble): GLBoolean;


PROCEDURE gluPwlCurve(nobj: PGLUnurbsObj; count: GLint; aarray: PGLfloat; stride: GLint; atype: GLint);


PROCEDURE gluQuadricCallback(qobj: PGLuQuadricObj; which: GLenum; fn: TGLUQuadricErrorProc);


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, heightin: GLint; typein: GLenum; CONST datain; widthout, heightout: GLint; typeout: GLenum; VAR dataout): GLint;


PROCEDURE gluSphere(qobj: PGLuQuadricObj; radius: GLdouble; slices, stacks: GLint);


PROCEDURE gluTessBeginContour(tess: PGLUtesselatorObj);


PROCEDURE gluTessBeginPolygon(tess: PGLUtesselatorObj; CONST polygon_data );


PROCEDURE gluTessCallback(tess: PGLUtesselatorObj; which: GLenum; fn: TGLUTesselationCallback);


PROCEDURE gluTessEndContour(tess: PGLUtesselatorObj);


PROCEDURE gluTessEndPolygon(tess: PGLUtesselatorObj);


PROCEDURE gluTessNormal(tess: PGLUtesselatorObj; x, y, z: GLdouble);


PROCEDURE gluTessProperty(tess: PGLUtesselatorObj; which: GLenum; value: GLdouble);


PROCEDURE gluTessVertex(tess: PGLUtesselatorObj; coords: TAffineDblVector; CONST data );


FUNCTION gluUnProject(winx, winy, winz: GLdouble; modelMatrix, projMatrix: THomogenDblMatrix; viewport: THomogenIntVector; objx, objy, objz: PGLdouble): GLBoolean;


Types


GLUNurbsObj = record
end;

GLUQuadricObj = record
end;

GLUTesselatorObj = record
end;

GLUTriangulatorObj = record
end;

PGLUnurbsObj        = ^GLUnurbsObj

PGLUquadricObj      = ^GLUquadricObj

PGLUtesselatorObj   = ^GLUtesselatorObj

PGLUtriangulatorObj = ^GLUtriangulatorObj

TAffineDblVector    = ARRAY[0..2] OF GLdouble;

TAffineFloatVector  = ARRAY[0..2] OF GLfloat;

TAffineIntVector    = ARRAY[0..2] OF GLint;

TGLUNurbsErrorProc  = PROCEDURE(error: GLenum)
gluNurbsCallback
TGLUQuadricErrorProc = PROCEDURE(error: GLenum)
----- Callback function types ----- gluQuadricCallback
TGLUTessBeginDataProc    = PROCEDURE(atype: GLenum; CONST polygon_data)

TGLUTessBeginProc        = PROCEDURE(atype: GLenum)

TGLUTessCombineDataProc  = PROCEDURE(coords: TAffineDblVector; vertex_data: THomogenPtrVector;
                                          weight: THomogenFloatVector; VAR outData: Pointer;
                                          CONST polygon_data)

TGLUTessCombineProc      = PROCEDURE(coords: TAffineDblVector; vertex_data: THomogenPtrVector;
                                          weight: THomogenFloatVector; VAR outData: Pointer)

TGLUTessEdgeFlagDataProc = PROCEDURE(flag: GLboolean; CONST polygon_data)

TGLUTessEdgeFlagProc     = PROCEDURE(flag: GLboolean)

TGLUTesselationCallback  = Pointer
gluTessCallback
TGLUTessEndDataProc      = PROCEDURE(CONST polygon_data)

TGLUTessEndProc          = PROCEDURE

TGLUTessErrorDataProc    = PROCEDURE(errno: GLenum; CONST polygon_data)

TGLUTessErrorProc        = PROCEDURE(errno: GLenum)

TGLUTessVertexDataProc   = PROCEDURE(CONST vertex_data; CONST polygon_data)

TGLUTessVertexProc       = PROCEDURE(CONST vertex_data)

THomogenDblMatrix   = ARRAY[0..3,0..3] OF GLdouble;

THomogenDblVector   = ARRAY[0..3] OF GLdouble;

THomogenFloatMatrix = ARRAY[0..3,0..3] OF GLfloat;

THomogenFloatVector = ARRAY[0..3] OF GLfloat;

THomogenIntMatrix   = ARRAY[0..3,0..3] OF GLint;

THomogenIntVector   = ARRAY[0..3] OF GLint;

THomogenPtrVector   = ARRAY[0..3] OF Pointer;

Constants

GLu32 = 'GLu32.DLL'

GLU_AUTO_LOAD_MATRIX = 100200

----- NURBS constants ----- NurbsProperty

GLU_BEGIN = GLU_TESS_BEGIN

Names without "TESS_" prefix

GLU_CCW = 100121

GLU_CULLING = 100201

GLU_CW = 100120

Contours types -- obsolete!

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_EXTERIOR = 100123

GLU_FALSE = GL_FALSE

GLU_FILL = 100012

GLU_FLAT = 100001

GLU_INCOMPATIBLE_GL_VERSION = 100903

GLU_INSIDE = 100021

GLU_INTERIOR = 100122

GLU_INVALID_ENUM = 100900

Version {$DEFINE GLU_VERSION_1_1} {$DEFINE GLU_VERSION_1_2} Errors: (return value 0 = no error

GLU_INVALID_VALUE = 100901

GLU_LINE = 100011

GLU_MAP1_TRIM_2 = 100210

NurbsTrim

GLU_MAP1_TRIM_3 = 100211

GLU_NONE = 100002

GLU_NURBS_ERROR1 = 100251

NurbsCallback GLU_ERROR 100103 NurbsErrors

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

NurbsDisplay GLU_FILL 100012

GLU_OUTSIDE = 100020

QuadricOrientation

GLU_OUT_OF_MEMORY = 100902

GLU_PARAMETRIC_ERROR = 100216

GLU_PARAMETRIC_TOLERANCE = 100202

GLU_PATH_LENGTH = 100215

NurbsSampling

GLU_POINT = 100010

QuadricDrawStyle

GLU_SAMPLING_METHOD = 100205

GLU_SAMPLING_TOLERANCE = 100203

GLU_SILHOUETTE = 100013

GLU_SMOOTH = 100000

----- Quadric constants ----- QuadricNormal

GLU_TESS_BEGIN = 100100

TessCallback

GLU_TESS_BEGIN_DATA = 100106

GLU_TESS_BOUNDARY_ONLY = 100141

GLU_TESS_COMBINE = 100105

GLU_TESS_COMBINE_DATA = 100111

GLU_TESS_COORD_TOO_LARGE = GLU_TESS_ERROR5

GLU_TESS_EDGE_FLAG = 100104

GLU_TESS_EDGE_FLAG_DATA = 100110

GLU_TESS_END = 100102

GLU_TESS_END_DATA = 100108

GLU_TESS_ERROR = 100103

GLU_TESS_ERROR1 = 100151

TessError

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

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

GLU_TESS_VERTEX_DATA = 100107

GLU_TESS_WINDING_ABS_GEQ_TWO = 100134

GLU_TESS_WINDING_NEGATIVE = 100133

GLU_TESS_WINDING_NONZERO = 100131

GLU_TESS_WINDING_ODD = 100130

TessWinding

GLU_TESS_WINDING_POSITIVE = 100132

GLU_TESS_WINDING_RULE = 100140

TessProperty

GLU_TRUE = GL_TRUE

Boolean

GLU_UNKNOWN = 100124

GLU_U_STEP = 100206

GLU_VERSION = 100800

StringName

GLU_VERTEX = GLU_TESS_VERTEX

GLU_V_STEP = 100207


Variables