Repository URL to install this package:
|
Version:
3.2.0 ▾
|
{
* SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
* Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice including the dates of first publication and
* either this permission notice or a reference to
* http://oss.sgi.com/projects/FreeB/
* shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* Except as contained in this notice, the name of Silicon Graphics, Inc.
* shall not be used in advertising or otherwise to promote the sale, use or
* other dealings in this Software without prior written authorization from
* Silicon Graphics, Inc.
}
{$MACRO ON}
{$MODE OBJFPC}
{$IFDEF Windows}
{$DEFINE extdecl := stdcall}
{$ELSE}
{$DEFINE extdecl := cdecl}
{$ENDIF}
{$IFDEF MORPHOS}
{$INLINE ON}
{$DEFINE GLU_UNIT}
{$ENDIF}
unit glu;
interface
{
Automatically converted by H2Pas 1.0.0 from out.h
The following command line parameters were used:
-P
-D
-l
glu.dll
out
-o
glu.pp
}
uses
SysUtils,
{$IFDEF Windows}
Windows,
{$ELSE}
{$IFDEF MORPHOS}
TinyGL,
{$ENDIF}
{$ENDIF}
GL;
Const
{$if defined(Windows)}
GLU_Lib = 'glu32.dll';
{$elseif defined(OS2)}
GLU_Lib = 'opengl.dll';
{$elseif defined(darwin)}
GLU_LIB = '/System/Library/Frameworks/OpenGL.framework/Libraries/libGLU.dylib';
{$elseif defined(haiku) or defined(OpenBSD)}
GLU_LIB = 'libGLU.so';
{$elseif defined(MorphOS)}
GLU_LIB = 'tinygl.library';
{$else}
GLU_LIB = 'libGLU.so.1';
{$endif}
type
TViewPortArray = array [0..3] of GLint;
T16dArray = array [0..15] of GLdouble;
T3dArray = array [0..2] of GLdouble;
T4pArray = array [0..3] of Pointer;
T4fArray = array [0..3] of GLfloat;
const
GLU_EXT_object_space_tess = 1;
GLU_EXT_nurbs_tessellator = 1;
{ Boolean }
GLU_FALSE = 0;
GLU_TRUE = 1;
{ Version }
GLU_VERSION_1_1 = 1;
GLU_VERSION_1_2 = 1;
GLU_VERSION_1_3 = 1;
{ StringName }
GLU_VERSION = 100800;
GLU_EXTENSIONS = 100801;
{ ErrorCode }
GLU_INVALID_ENUM = 100900;
GLU_INVALID_VALUE = 100901;
GLU_OUT_OF_MEMORY = 100902;
GLU_INCOMPATIBLE_GL_VERSION = 100903;
GLU_INVALID_OPERATION = 100904;
{ NurbsDisplay }
{ GLU_FILL }
GLU_OUTLINE_POLYGON = 100240;
GLU_OUTLINE_PATCH = 100241;
{ NurbsCallback }
GLU_NURBS_ERROR = 100103;
GLU_ERROR = 100103;
GLU_NURBS_BEGIN = 100164;
GLU_NURBS_BEGIN_EXT = 100164;
GLU_NURBS_VERTEX = 100165;
GLU_NURBS_VERTEX_EXT = 100165;
GLU_NURBS_NORMAL = 100166;
GLU_NURBS_NORMAL_EXT = 100166;
GLU_NURBS_COLOR = 100167;
GLU_NURBS_COLOR_EXT = 100167;
GLU_NURBS_TEXTURE_COORD = 100168;
GLU_NURBS_TEX_COORD_EXT = 100168;
GLU_NURBS_END = 100169;
GLU_NURBS_END_EXT = 100169;
GLU_NURBS_BEGIN_DATA = 100170;
GLU_NURBS_BEGIN_DATA_EXT = 100170;
GLU_NURBS_VERTEX_DATA = 100171;
GLU_NURBS_VERTEX_DATA_EXT = 100171;
GLU_NURBS_NORMAL_DATA = 100172;
GLU_NURBS_NORMAL_DATA_EXT = 100172;
GLU_NURBS_COLOR_DATA = 100173;
GLU_NURBS_COLOR_DATA_EXT = 100173;
GLU_NURBS_TEXTURE_COORD_DATA = 100174;
GLU_NURBS_TEX_COORD_DATA_EXT = 100174;
GLU_NURBS_END_DATA = 100175;
GLU_NURBS_END_DATA_EXT = 100175;
{ NurbsError }
GLU_NURBS_ERROR1 = 100251;
GLU_NURBS_ERROR2 = 100252;
GLU_NURBS_ERROR3 = 100253;
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_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_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_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;
{ NurbsProperty }
GLU_AUTO_LOAD_MATRIX = 100200;
GLU_CULLING = 100201;
GLU_SAMPLING_TOLERANCE = 100203;
GLU_DISPLAY_MODE = 100204;
GLU_PARAMETRIC_TOLERANCE = 100202;
GLU_SAMPLING_METHOD = 100205;
GLU_U_STEP = 100206;
GLU_V_STEP = 100207;
GLU_NURBS_MODE = 100160;
GLU_NURBS_MODE_EXT = 100160;
GLU_NURBS_TESSELLATOR = 100161;
GLU_NURBS_TESSELLATOR_EXT = 100161;
GLU_NURBS_RENDERER = 100162;
GLU_NURBS_RENDERER_EXT = 100162;
{ NurbsSampling }
GLU_OBJECT_PARAMETRIC_ERROR = 100208;
GLU_OBJECT_PARAMETRIC_ERROR_EXT = 100208;
GLU_OBJECT_PATH_LENGTH = 100209;
GLU_OBJECT_PATH_LENGTH_EXT = 100209;
GLU_PATH_LENGTH = 100215;
GLU_PARAMETRIC_ERROR = 100216;
GLU_DOMAIN_DISTANCE = 100217;
{ NurbsTrim }
GLU_MAP1_TRIM_2 = 100210;
GLU_MAP1_TRIM_3 = 100211;
{ QuadricDrawStyle }
GLU_POINT = 100010;
GLU_LINE = 100011;
GLU_FILL = 100012;
GLU_SILHOUETTE = 100013;
{ QuadricCallback }
{ GLU_ERROR }
{ QuadricNormal }
GLU_SMOOTH = 100000;
GLU_FLAT = 100001;
GLU_NONE = 100002;
{ QuadricOrientation }
GLU_OUTSIDE = 100020;
GLU_INSIDE = 100021;
{ TessCallback }
GLU_TESS_BEGIN = 100100;
GLU_BEGIN = 100100;
GLU_TESS_VERTEX = 100101;
GLU_VERTEX = 100101;
GLU_TESS_END = 100102;
GLU_END = 100102;
GLU_TESS_ERROR = 100103;
GLU_TESS_EDGE_FLAG = 100104;
GLU_EDGE_FLAG = 100104;
GLU_TESS_COMBINE = 100105;
GLU_TESS_BEGIN_DATA = 100106;
GLU_TESS_VERTEX_DATA = 100107;
GLU_TESS_END_DATA = 100108;
GLU_TESS_ERROR_DATA = 100109;
GLU_TESS_EDGE_FLAG_DATA = 100110;
GLU_TESS_COMBINE_DATA = 100111;
{ TessContour }
GLU_CW = 100120;
GLU_CCW = 100121;
GLU_INTERIOR = 100122;
GLU_EXTERIOR = 100123;
GLU_UNKNOWN = 100124;
{ TessProperty }
GLU_TESS_WINDING_RULE = 100140;
GLU_TESS_BOUNDARY_ONLY = 100141;
GLU_TESS_TOLERANCE = 100142;
{ TessError }
GLU_TESS_ERROR1 = 100151;
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_MISSING_BEGIN_POLYGON = 100151;
GLU_TESS_MISSING_BEGIN_CONTOUR = 100152;
GLU_TESS_MISSING_END_POLYGON = 100153;
GLU_TESS_MISSING_END_CONTOUR = 100154;
GLU_TESS_COORD_TOO_LARGE = 100155;
GLU_TESS_NEED_COMBINE_CALLBACK = 100156;
{ TessWinding }
GLU_TESS_WINDING_ODD = 100130;
GLU_TESS_WINDING_NONZERO = 100131;
GLU_TESS_WINDING_POSITIVE = 100132;
GLU_TESS_WINDING_NEGATIVE = 100133;
GLU_TESS_WINDING_ABS_GEQ_TWO = 100134;
const
GLU_TESS_MAX_COORD = 1.0e150;
{*********************************************************** }
{$IFDEF FPC}
{$PACKRECORDS C}
{$ENDIF}
Type
GLUnurbs = record end;
GLUquadric = record end;
GLUtesselator = record end;
PGLdouble = ^GLdouble;
PGLfloat = ^GLfloat;
PGLint = ^GLint;
PGLubyte = PAnsiChar; //< this is only used for strings in GLU
PGLUnurbs = ^GLUnurbs;
PGLUquadric = ^GLUquadric;
PGLUtesselator = ^GLUtesselator;
GLUnurbsObj = GLUnurbs;
GLUquadricObj = GLUquadric;
GLUtesselatorObj = GLUtesselator;
GLUtriangulatorObj = GLUtesselator;
_GLUfuncptr = procedure ;extdecl;
TCallback = _GLUfuncptr;
{$IFDEF MORPHOS}
{ MorphOS GL works differently due to different dynamic-library handling on Amiga-like }
{ systems, so its headers are included here. }
{$INCLUDE tinyglh.inc}
{$ELSE MORPHOS}
var
gluBeginCurve : procedure(nurb:PGLUnurbs);extdecl;
gluBeginPolygon : procedure(tess:PGLUtesselator);extdecl;
gluBeginSurface : procedure(nurb:PGLUnurbs);extdecl;
gluBeginTrim : procedure(nurb:PGLUnurbs);extdecl;
gluBuild1DMipmapLevels : function(target:GLenum; internalFormat:GLint; width:GLsizei; format:GLenum; _type:GLenum;
level:GLint; base:GLint; max:GLint; data:pointer):GLint;extdecl;
gluBuild1DMipmaps : function(target:GLenum; internalFormat:GLint; width:GLsizei; format:GLenum; _type:GLenum;
data:pointer):GLint;extdecl;
gluBuild2DMipmapLevels : function(target:GLenum; internalFormat:GLint; width:GLsizei; height:GLsizei; format:GLenum;
_type:GLenum; level:GLint; base:GLint; max:GLint; data:pointer):GLint;extdecl;
gluBuild2DMipmaps : function(target:GLenum; internalFormat:GLint; width:GLsizei; height:GLsizei; format:GLenum;
_type:GLenum; data:pointer):GLint;extdecl;
gluBuild3DMipmapLevels : function(target:GLenum; internalFormat:GLint; width:GLsizei; height:GLsizei; depth:GLsizei;
format:GLenum; _type:GLenum; level:GLint; base:GLint; max:GLint;
data:pointer):GLint;extdecl;
gluBuild3DMipmaps : function(target:GLenum; internalFormat:GLint; width:GLsizei; height:GLsizei; depth:GLsizei;
format:GLenum; _type:GLenum; data:pointer):GLint;extdecl;
gluCheckExtension : function(extName:PGLubyte; extString:PGLubyte):GLboolean;extdecl;
gluCylinder : procedure(quad:PGLUquadric; base:GLdouble; top:GLdouble; height:GLdouble; slices:GLint;
stacks:GLint);extdecl;
gluDeleteNurbsRenderer : procedure(nurb:PGLUnurbs);extdecl;
gluDeleteQuadric : procedure(quad:PGLUquadric);extdecl;
gluDeleteTess : procedure(tess:PGLUtesselator);extdecl;
gluDisk : procedure(quad:PGLUquadric; inner:GLdouble; outer:GLdouble; slices:GLint; loops:GLint);extdecl;
gluEndCurve : procedure(nurb:PGLUnurbs);extdecl;
gluEndPolygon : procedure(tess:PGLUtesselator);extdecl;
gluEndSurface : procedure(nurb:PGLUnurbs);extdecl;
gluEndTrim : procedure(nurb:PGLUnurbs);extdecl;
gluErrorString : function(error:GLenum): PGLubyte;extdecl;
gluGetNurbsProperty : procedure(nurb:PGLUnurbs; _property:GLenum; data:PGLfloat);extdecl;
gluGetString : function(name:GLenum):PGLubyte;extdecl;
gluGetTessProperty : procedure(tess:PGLUtesselator; which:GLenum; data:PGLdouble);extdecl;
gluLoadSamplingMatrices : procedure(nurb:PGLUnurbs; model:PGLfloat; perspective:PGLfloat; view:PGLint);extdecl;
gluLookAt : procedure(eyeX:GLdouble; eyeY:GLdouble; eyeZ:GLdouble; centerX:GLdouble; centerY:GLdouble;
centerZ:GLdouble; upX:GLdouble; upY:GLdouble; upZ:GLdouble);extdecl;
gluNewNurbsRenderer : function:PGLUnurbs;extdecl;
gluNewQuadric : function:PGLUquadric;extdecl;
gluNewTess : function:PGLUtesselator;extdecl;
gluNextContour : procedure(tess:PGLUtesselator; _type:GLenum);extdecl;
gluNurbsCallback : procedure(nurb:PGLUnurbs; which:GLenum; CallBackFunc:_GLUfuncptr);extdecl;
gluNurbsCallbackData : procedure(nurb:PGLUnurbs; userData:PGLvoid);extdecl;
gluNurbsCallbackDataEXT : procedure(nurb:PGLUnurbs; userData:PGLvoid);extdecl;
gluNurbsCurve : procedure(nurb:PGLUnurbs; knotCount:GLint; knots:PGLfloat; stride:GLint; control:PGLfloat;
order:GLint; _type:GLenum);extdecl;
gluNurbsProperty : procedure(nurb:PGLUnurbs; _property:GLenum; value:GLfloat);extdecl;
gluNurbsSurface : procedure(nurb:PGLUnurbs; sKnotCount:GLint; sKnots:PGLfloat; tKnotCount:GLint; tKnots:PGLfloat;
sStride:GLint; tStride:GLint; control:PGLfloat; sOrder:GLint; tOrder:GLint;
_type:GLenum);extdecl;
gluOrtho2D : procedure(left:GLdouble; right:GLdouble; bottom:GLdouble; top:GLdouble);extdecl;
gluPartialDisk : procedure(quad:PGLUquadric; inner:GLdouble; outer:GLdouble; slices:GLint; loops:GLint;
start:GLdouble; sweep:GLdouble);extdecl;
gluPerspective : procedure(fovy:GLdouble; aspect:GLdouble; zNear:GLdouble; zFar:GLdouble);extdecl;
gluPickMatrix : procedure(x:GLdouble; y:GLdouble; delX:GLdouble; delY:GLdouble; viewport:PGLint);extdecl;
gluProject : function(objX:GLdouble; objY:GLdouble; objZ:GLdouble; model:PGLdouble; proj:PGLdouble;
view:PGLint; winX:PGLdouble; winY:PGLdouble; winZ:PGLdouble):GLint;extdecl;
gluPwlCurve : procedure(nurb:PGLUnurbs; count:GLint; data:PGLfloat; stride:GLint; _type:GLenum);extdecl;
gluQuadricCallback : procedure(quad:PGLUquadric; which:GLenum; CallBackFunc:_GLUfuncptr);extdecl;
gluQuadricDrawStyle : procedure(quad:PGLUquadric; draw:GLenum);extdecl;
gluQuadricNormals : procedure(quad:PGLUquadric; normal:GLenum);extdecl;
gluQuadricOrientation : procedure(quad:PGLUquadric; orientation:GLenum);extdecl;
gluQuadricTexture : procedure(quad:PGLUquadric; texture:GLboolean);extdecl;
gluScaleImage : function(format:GLenum; wIn:GLsizei; hIn:GLsizei; typeIn:GLenum; dataIn:pointer;
wOut:GLsizei; hOut:GLsizei; typeOut:GLenum; dataOut:PGLvoid):GLint;extdecl;
gluSphere : procedure(quad:PGLUquadric; radius:GLdouble; slices:GLint; stacks:GLint);extdecl;
gluTessBeginContour : procedure(tess:PGLUtesselator);extdecl;
gluTessBeginPolygon : procedure(tess:PGLUtesselator; data:PGLvoid);extdecl;
gluTessCallback : procedure(tess:PGLUtesselator; which:GLenum; CallBackFunc:_GLUfuncptr);extdecl;
gluTessEndContour : procedure(tess:PGLUtesselator);extdecl;
gluTessEndPolygon : procedure(tess:PGLUtesselator);extdecl;
gluTessNormal : procedure(tess:PGLUtesselator; valueX:GLdouble; valueY:GLdouble; valueZ:GLdouble);extdecl;
gluTessProperty : procedure(tess:PGLUtesselator; which:GLenum; data:GLdouble);extdecl;
gluTessVertex : procedure(tess:PGLUtesselator; location:PGLdouble; data:PGLvoid);extdecl;
gluUnProject : function(winX:GLdouble; winY:GLdouble; winZ:GLdouble; model:PGLdouble; proj:PGLdouble;
view:PGLint; objX:PGLdouble; objY:PGLdouble; objZ:PGLdouble):GLint;extdecl;
gluUnProject4 : function(winX:GLdouble; winY:GLdouble; winZ:GLdouble; clipW:GLdouble; model:PGLdouble;
proj:PGLdouble; view:PGLint; nearVal:GLdouble; farVal:GLdouble; objX:PGLdouble;
objY:PGLdouble; objZ:PGLdouble; objW:PGLdouble):GLint;extdecl;
{$endif}
implementation
{$IFDEF MORPHOS}
{ MorphOS GL works differently due to different dynamic-library handling on Amiga-like }
{ systems, so its functions are included here. }
{$INCLUDE tinygl.inc}
{$ELSE MORPHOS}
uses
dynlibs;
var
hlib : tlibhandle;
procedure Freeglu;
begin
if (hlib <> 0) then
FreeLibrary(hlib);
gluBeginCurve:=nil;
gluBeginPolygon:=nil;
gluBeginSurface:=nil;
gluBeginTrim:=nil;
gluBuild1DMipmapLevels:=nil;
gluBuild1DMipmaps:=nil;
gluBuild2DMipmapLevels:=nil;
gluBuild2DMipmaps:=nil;
gluBuild3DMipmapLevels:=nil;
gluBuild3DMipmaps:=nil;
gluCheckExtension:=nil;
gluCylinder:=nil;
gluDeleteNurbsRenderer:=nil;
gluDeleteQuadric:=nil;
gluDeleteTess:=nil;
gluDisk:=nil;
gluEndCurve:=nil;
gluEndPolygon:=nil;
gluEndSurface:=nil;
gluEndTrim:=nil;
gluErrorString:=nil;
gluGetNurbsProperty:=nil;
gluGetString:=nil;
gluGetTessProperty:=nil;
gluLoadSamplingMatrices:=nil;
gluLookAt:=nil;
gluNewNurbsRenderer:=nil;
gluNewQuadric:=nil;
gluNewTess:=nil;
gluNextContour:=nil;
gluNurbsCallback:=nil;
gluNurbsCallbackData:=nil;
gluNurbsCallbackDataEXT:=nil;
gluNurbsCurve:=nil;
gluNurbsProperty:=nil;
gluNurbsSurface:=nil;
gluOrtho2D:=nil;
gluPartialDisk:=nil;
gluPerspective:=nil;
gluPickMatrix:=nil;
gluProject:=nil;
gluPwlCurve:=nil;
gluQuadricCallback:=nil;
gluQuadricDrawStyle:=nil;
gluQuadricNormals:=nil;
gluQuadricOrientation:=nil;
gluQuadricTexture:=nil;
gluScaleImage:=nil;
gluSphere:=nil;
gluTessBeginContour:=nil;
gluTessBeginPolygon:=nil;
gluTessCallback:=nil;
gluTessEndContour:=nil;
gluTessEndPolygon:=nil;
gluTessNormal:=nil;
gluTessProperty:=nil;
gluTessVertex:=nil;
gluUnProject:=nil;
gluUnProject4:=nil;
end;
procedure Loadglu(lib : pchar);
begin
Freeglu;
hlib:=LoadLibrary(lib);
if hlib=0 then
raise Exception.Create(format('Could not load library: %s',[lib]));
pointer(gluBeginCurve):=GetProcAddress(hlib,'gluBeginCurve');
pointer(gluBeginPolygon):=GetProcAddress(hlib,'gluBeginPolygon');
pointer(gluBeginSurface):=GetProcAddress(hlib,'gluBeginSurface');
pointer(gluBeginTrim):=GetProcAddress(hlib,'gluBeginTrim');
pointer(gluBuild1DMipmapLevels):=GetProcAddress(hlib,'gluBuild1DMipmapLevels');
pointer(gluBuild1DMipmaps):=GetProcAddress(hlib,'gluBuild1DMipmaps');
pointer(gluBuild2DMipmapLevels):=GetProcAddress(hlib,'gluBuild2DMipmapLevels');
pointer(gluBuild2DMipmaps):=GetProcAddress(hlib,'gluBuild2DMipmaps');
pointer(gluBuild3DMipmapLevels):=GetProcAddress(hlib,'gluBuild3DMipmapLevels');
pointer(gluBuild3DMipmaps):=GetProcAddress(hlib,'gluBuild3DMipmaps');
pointer(gluCheckExtension):=GetProcAddress(hlib,'gluCheckExtension');
pointer(gluCylinder):=GetProcAddress(hlib,'gluCylinder');
pointer(gluDeleteNurbsRenderer):=GetProcAddress(hlib,'gluDeleteNurbsRenderer');
pointer(gluDeleteQuadric):=GetProcAddress(hlib,'gluDeleteQuadric');
pointer(gluDeleteTess):=GetProcAddress(hlib,'gluDeleteTess');
pointer(gluDisk):=GetProcAddress(hlib,'gluDisk');
pointer(gluEndCurve):=GetProcAddress(hlib,'gluEndCurve');
pointer(gluEndPolygon):=GetProcAddress(hlib,'gluEndPolygon');
pointer(gluEndSurface):=GetProcAddress(hlib,'gluEndSurface');
pointer(gluEndTrim):=GetProcAddress(hlib,'gluEndTrim');
pointer(gluErrorString):=GetProcAddress(hlib,'gluErrorString');
pointer(gluGetNurbsProperty):=GetProcAddress(hlib,'gluGetNurbsProperty');
pointer(gluGetString):=GetProcAddress(hlib,'gluGetString');
pointer(gluGetTessProperty):=GetProcAddress(hlib,'gluGetTessProperty');
pointer(gluLoadSamplingMatrices):=GetProcAddress(hlib,'gluLoadSamplingMatrices');
pointer(gluLookAt):=GetProcAddress(hlib,'gluLookAt');
pointer(gluNewNurbsRenderer):=GetProcAddress(hlib,'gluNewNurbsRenderer');
pointer(gluNewQuadric):=GetProcAddress(hlib,'gluNewQuadric');
pointer(gluNewTess):=GetProcAddress(hlib,'gluNewTess');
pointer(gluNextContour):=GetProcAddress(hlib,'gluNextContour');
pointer(gluNurbsCallback):=GetProcAddress(hlib,'gluNurbsCallback');
pointer(gluNurbsCallbackData):=GetProcAddress(hlib,'gluNurbsCallbackData');
pointer(gluNurbsCallbackDataEXT):=GetProcAddress(hlib,'gluNurbsCallbackDataEXT');
pointer(gluNurbsCurve):=GetProcAddress(hlib,'gluNurbsCurve');
pointer(gluNurbsProperty):=GetProcAddress(hlib,'gluNurbsProperty');
pointer(gluNurbsSurface):=GetProcAddress(hlib,'gluNurbsSurface');
pointer(gluOrtho2D):=GetProcAddress(hlib,'gluOrtho2D');
pointer(gluPartialDisk):=GetProcAddress(hlib,'gluPartialDisk');
pointer(gluPerspective):=GetProcAddress(hlib,'gluPerspective');
pointer(gluPickMatrix):=GetProcAddress(hlib,'gluPickMatrix');
pointer(gluProject):=GetProcAddress(hlib,'gluProject');
pointer(gluPwlCurve):=GetProcAddress(hlib,'gluPwlCurve');
pointer(gluQuadricCallback):=GetProcAddress(hlib,'gluQuadricCallback');
pointer(gluQuadricDrawStyle):=GetProcAddress(hlib,'gluQuadricDrawStyle');
pointer(gluQuadricNormals):=GetProcAddress(hlib,'gluQuadricNormals');
pointer(gluQuadricOrientation):=GetProcAddress(hlib,'gluQuadricOrientation');
pointer(gluQuadricTexture):=GetProcAddress(hlib,'gluQuadricTexture');
pointer(gluScaleImage):=GetProcAddress(hlib,'gluScaleImage');
pointer(gluSphere):=GetProcAddress(hlib,'gluSphere');
pointer(gluTessBeginContour):=GetProcAddress(hlib,'gluTessBeginContour');
pointer(gluTessBeginPolygon):=GetProcAddress(hlib,'gluTessBeginPolygon');
pointer(gluTessCallback):=GetProcAddress(hlib,'gluTessCallback');
pointer(gluTessEndContour):=GetProcAddress(hlib,'gluTessEndContour');
pointer(gluTessEndPolygon):=GetProcAddress(hlib,'gluTessEndPolygon');
pointer(gluTessNormal):=GetProcAddress(hlib,'gluTessNormal');
pointer(gluTessProperty):=GetProcAddress(hlib,'gluTessProperty');
pointer(gluTessVertex):=GetProcAddress(hlib,'gluTessVertex');
pointer(gluUnProject):=GetProcAddress(hlib,'gluUnProject');
pointer(gluUnProject4):=GetProcAddress(hlib,'gluUnProject4');
end;
initialization
LoadGLu(GLU_LIB);
finalization
Freeglu;
{$ENDIF MORPHOS}
end.