# This is the definition file for all GLU stuff %COPY_INTERFACE const GLU_TRUE = GL_TRUE; GLU_FALSE = GL_FALSE; // Normal vectors GLU_SMOOTH = 100000; GLU_FLAT = 100001; GLU_NONE = 100002; // Quadric draw styles GLU_POINT = 100010; GLU_LINE = 100011; GLU_FILL = 100012; GLU_SILHOUETTE = 100013; // Quadric orientation GLU_OUTSIDE = 100020; GLU_INSIDE = 100021; // Tesselator GLU_BEGIN = 100100; GLU_VERTEX = 100101; GLU_END = 100102; GLU_ERROR = 100103; GLU_EDGE_FLAG = 100104; // Contour types GLU_CW = 100120; GLU_CCW = 100121; GLU_INTERIOR = 100122; GLU_EXTERIOR = 100123; GLU_UNKNOWN = 100124; // Tesselation errors GLU_TESS_ERROR1 = 100151; // missing gluEndPolygon GLU_TESS_ERROR2 = 100152; // missing gluBeginPolygon GLU_TESS_ERROR3 = 100153; // misoriented contour GLU_TESS_ERROR4 = 100154; // vertex/edge intersection GLU_TESS_ERROR5 = 100155; // misoriented or self-intersecting loops GLU_TESS_ERROR6 = 100156; // coincident vertices GLU_TESS_ERROR7 = 100157; // all vertices collinear GLU_TESS_ERROR8 = 100158; // intersecting edges GLU_TESS_ERROR9 = 100159; // not coplanar contours // NURBS GLU_AUTO_LOAD_MATRIX = 100200; GLU_CULLING = 100201; GLU_PARAMETRIC_TOLERANCE = 100202; GLU_SAMPLING_TOLERANCE = 100203; GLU_DISPLAY_MODE = 100204; GLU_SAMPLING_METHOD = 100205; GLU_U_STEP = 100206; GLU_V_STEP = 100207; GLU_PATH_LENGTH = 100215; GLU_PARAMETRIC_ERROR = 100216; GLU_DOMAIN_DISTANCE = 100217; GLU_MAP1_TRIM_2 = 100210; GLU_MAP1_TRIM_3 = 100211; GLU_OUTLINE_POLYGON = 100240; GLU_OUTLINE_PATCH = 100241; GLU_NURBS_ERROR1 = 100251; // spline order un-supported GLU_NURBS_ERROR2 = 100252; // too few knots GLU_NURBS_ERROR3 = 100253; // valid knot range is empty GLU_NURBS_ERROR4 = 100254; // decreasing knot sequence GLU_NURBS_ERROR5 = 100255; // knot multiplicity > spline order GLU_NURBS_ERROR6 = 100256; // endcurve() must follow bgncurve() GLU_NURBS_ERROR7 = 100257; // bgncurve() must precede endcurve() GLU_NURBS_ERROR8 = 100258; // ctrlarray or knot vector is NULL GLU_NURBS_ERROR9 = 100259; // cannot draw pwlcurves GLU_NURBS_ERROR10 = 100260; // missing gluNurbsCurve() GLU_NURBS_ERROR11 = 100261; // missing gluNurbsSurface() GLU_NURBS_ERROR12 = 100262; // endtrim() must precede endsurface() GLU_NURBS_ERROR13 = 100263; // bgnsurface() must precede endsurface() GLU_NURBS_ERROR14 = 100264; // curve of improper type passed as trim curve GLU_NURBS_ERROR15 = 100265; // bgnsurface() must precede bgntrim() GLU_NURBS_ERROR16 = 100266; // endtrim() must follow bgntrim() GLU_NURBS_ERROR17 = 100267; // bgntrim() must precede endtrim()*/ GLU_NURBS_ERROR18 = 100268; // invalid or missing trim curve*/ GLU_NURBS_ERROR19 = 100269; // bgntrim() must precede pwlcurve() GLU_NURBS_ERROR20 = 100270; // pwlcurve referenced twice*/ GLU_NURBS_ERROR21 = 100271; // pwlcurve and nurbscurve mixed GLU_NURBS_ERROR22 = 100272; // improper usage of trim data type GLU_NURBS_ERROR23 = 100273; // nurbscurve referenced twice GLU_NURBS_ERROR24 = 100274; // nurbscurve and pwlcurve mixed GLU_NURBS_ERROR25 = 100275; // nurbssurface referenced twice GLU_NURBS_ERROR26 = 100276; // invalid property GLU_NURBS_ERROR27 = 100277; // endsurface() must follow bgnsurface() GLU_NURBS_ERROR28 = 100278; // intersecting or misoriented trim curves GLU_NURBS_ERROR29 = 100279; // intersecting trim curves GLU_NURBS_ERROR30 = 100280; // UNUSED GLU_NURBS_ERROR31 = 100281; // unconnected trim curves GLU_NURBS_ERROR32 = 100282; // unknown knot error GLU_NURBS_ERROR33 = 100283; // negative vertex count encountered GLU_NURBS_ERROR34 = 100284; // negative byte-stride GLU_NURBS_ERROR35 = 100285; // unknown type descriptor GLU_NURBS_ERROR36 = 100286; // null control point reference GLU_NURBS_ERROR37 = 100287; // duplicate point on pwlcurve // Errors GLU_INVALID_ENUM = 100900; GLU_INVALID_VALUE = 100901; GLU_OUT_OF_MEMORY = 100902; GLU_INCOMPATIBLE_GL_VERSION = 100903; // New in GLU 1.1 GLU_VERSION = 100800; GLU_EXTENSIONS = 100801; type PGLUquadricObj = ^TGLUquadricObj; TGLUquadricObj = record end; PGLUtriangulatorObj = ^TGLUtriangulatorObj; TGLUtriangulatorObj = record end; PGLUnurbsObj = ^TGLUnurbsObj; TGLUnurbsObj = record end; TGLUQuadricCallback = procedure; cdecl; TGLUNurbsCallback = procedure; cdecl; TGLUTessCallback = procedure; cdecl; TGLUViewport = array[0..3] of LongInt; TGLUMatrixd = array[0..15] of Double; TGLUMatrixf = array[0..15] of Single; TGLUVectord = array[0..2] of Double; %END #===================================================================== # Procedures and functions #===================================================================== %PROCS // Miscellaneous functions gluLookAt: procedure(eye, eyey, eyez, centerx, centery, centerz, upx, upy, upz: Double); gluOrtho2D: procedure(left, right, bottom, top: Double); gluPerspective: procedure(fovy, aspect, zNear, zFar: Double); gluPickMatrix: procedure(x, y, width, height: Double; const viewport: TGLUViewport); gluProject: procedure(objx, objy, objz: Double; const modelMatrix, projMatrix: TGLUMatrixd; const viewport: TGLUViewport; winx, winy, winz: Double); gluUnProject: procedure(winx, winy, winz: Double; const modelMatrix, projMatrix: TGLUMatrixd; const viewport: TGLUViewport; objx, objy, objz: Double); gluErrorString: procedure(errorCode: GLenum); // Mipmapping and image scaling gluScaleImage: procedure(format: GLenum; within, heightin: LongInt; typein: GLenum; var datain; widthout, heightout: LongInt; typeout: GLenum; var dataout); gluBuild1DMipmaps: procedure(target: GLenum; components, width: LongInt; format, AType: GLEnum; var data); gluBuild2DMipmaps: procedure(target: GLenum; components, width, height: LongInt; format, AType: GLEnum; var data); // Quadrics gluNewQuadric: function: PGLUquadricObj; gluDeleteQuadric: procedure(state: PGLUquadricObj); gluQuadricDrawStyle: procedure(quadObject: PGLUquadricObj; drawStyle: GLenum); gluQuadricOrientation: procedure(quadObject: PGLUquadricObj; orientation: GLenum); gluQuadricNormals: procedure(quadObject: PGLUquadricObj; normals: GLenum); gluQuadricTexture: procedure(quadObject: PGLUquadricObj; textureCoords: Boolean); gluQuadricCallback: procedure(quadObject: PGLUquadricObj; which: GLenum; fn: TGLUQuadricCallback); gluCylinder: procedure(qobj: PGLUquadricObj; baseRadius, topRadius, height: Double; slices, stacks: LongInt); gluSphere: procedure(qobj: PGLUquadricObj; radius: Double; slices, stacks: LongInt); gluDisk: procedure(qobj: PGLUquadricObj; innerRadius, outerRadius: Double; slices, loops: LongInt); gluPartialDisk: procedure(qobj: PGLUquadricObj; innerRadius, outerRadius: Double; slices, loops: LongInt; startAngle, sweepAngle: Double); // Nurbs gluNewNurbsRenderer: function: PGLUnurbsObj; gluDeleteNurbsRenderer: procedure(nobj: PGLUnurbsObj); gluLoadSamplingMatrices: procedure(nobj: PGLUnurbsObj; const modelMatrix, projMatrix: TGLUMatrixf; const viewport: TGLUViewport); gluNurbsProperty: procedure(nobj: PGLUnurbsObj; AProperty: GLenum; value: Single); gluGetNurbsProperty: procedure(nobj: PGLUnurbsObj; AProperty: GLEnum; var value: Single); gluBeginCurve: procedure(nobj: PGLUnurbsObj); gluEndCurve: procedure(nobj: PGLUnurbsObj); gluNurbsCurve: procedure(nobj: PGLUnurbsObj; nknots: LongInt; var know: Single; stride: LongInt; var ctlarray: Single; order: LongInt; AType: GLenum); gluBeginSurface: procedure(nobj: PGLUnurbsObj); gluEndSurface: procedure(nobj: PGLUnurbsObj); gluNurbsSurface: procedure(nobj: PGLUnurbsObj; sknot_count: LongInt; var sknot: Single; tknot_count: LongInt; var tknot: Single; s_stride, t_stride: LongInt; var ctlarray: Single; sorder, torder: LongInt; AType: GLenum); gluBeginTrim: procedure(nobj: PGLUnurbsObj); gluEndTrim: procedure(nobj: PGLUnurbsObj); gluPwlCurve: procedure(nobj: PGLUnurbsObj; count: LongInt; var AArray: Single; stride: LongInt; AType: GLenum); gluNurbsCallback: procedure(nobj: PGLUnurbsObj; which: GLenum; fn: TGLUNurbsCallback); // Polygon tesselation gluNewTess: function: PGLUtriangulatorObj; gluTessCallback: procedure(tobj: PGLUtriangulatorObj; which: GLenum; fn: TGLUTessCallback); gluDeleteTess: procedure(tobj: PGLUtriangulatorObj); gluBeginPolygon: procedure(tobj: PGLUtriangulatorObj); gluEndPolygon: procedure(tobj: PGLUtriangulatorObj); gluNextContour: procedure(tobj: PGLUtriangulatorObj; AType: GLenum); gluTessVertex: procedure(tobj: PGLUtriangulatorObj; v: TGLUVectord; var data); // New functions in GLU 1.1 gluGetString: function(name: GLenum): PChar; %END