' ########################################################################################
' Microsoft Windows
' File: GLU.inc
' Contents: Procedure declarations, constant definitions and macros for the OpenGL Utility Library.
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_GLU_PBI)
#DEFINE PBX_GLU_PBI
%EQUATE `GLU_INC = 1
#INCLUDE ONCE "Legacy/Graphics/GL.inc"
'/*
'** 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.
'*/
'/*
'** Return the error string associated with a particular error code.
'** This will return 0 for an invalid error code.
'**
'** The generic function prototype that can be compiled for ANSI or Unicode
'** is defined as follows:
'**
'** LPCTSTR APIENTRY gluErrorStringWIN (GLenum errCode);
'*/
' ========================================================================================
' const GLubyte* APIENTRY gluErrorString (GLenum errCode);
' The gluErrorString function produces an error string from an OpenGL or GLU error code.
' The error string is ANSI only.
' ========================================================================================
DECLARE FUNCTION gluErrorString LIB "glu32.dll" ALIAS "gluErrorString" ( BYVAL errCode AS QUAD ' GLEnum errCode ) AS QUAD ' *GLubyte
' ========================================================================================
' const wchar_t* APIENTRY gluErrorUnicodeStringEXT (GLenum errCode);
' The gluErrorString function produces an error string from an OpenGL or GLU error code.
' The error string is Unicode.
' ========================================================================================
DECLARE FUNCTION gluErrorUnicodeStringEXT LIB "glu32.dll" ALIAS "gluErrorUnicodeStringEXT" ( BYVAL errCode AS QUAD ' GLEnum errCode ) AS QUAD ' *wchar_t
' ========================================================================================
' const GLubyte* APIENTRY gluGetString (GLenum name);
' Gets a string that describes the GLU version number or supported GLU extension calls.
' ========================================================================================
DECLARE FUNCTION gluGetString LIB "glu32.dll" ALIAS "gluGetString" ( BYVAL name AS QUAD ' GLEnum name ) AS QUAD ' *GLubyte
' ========================================================================================
' void APIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
' Defines a 2-D orthographic projection matrix.
' ========================================================================================
DECLARE SUB gluOrtho2D LIB "glu32.dll" ALIAS "gluOrtho2D" ( BYVAL left AS DOUBLE ' GLdouble left , BYVAL right AS DOUBLE ' GLdouble right , BYVAL bottom AS DOUBLE ' GLdouble bottom , BYVAL top AS DOUBLE ' GLdouble top ) ' void
' ========================================================================================
' void APIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
' ========================================================================================
DECLARE SUB gluPerspective LIB "glu32.dll" ALIAS "gluPerspective" ( BYVAL fovy AS DOUBLE ' GLdouble fovy , BYVAL aspect AS DOUBLE ' GLdouble aspect , BYVAL zNear AS DOUBLE ' GLdouble zNear , BYVAL zFar AS DOUBLE ' GLdouble zFar ) ' void
' ========================================================================================
' void APIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble width, GLdouble height,
' GLint viewport[4]);
' Defines a picking region.
' ========================================================================================
DECLARE SUB gluPickMatrix LIB "glu32.dll" ALIAS "gluPickMatrix" ( BYVAL x AS DOUBLE ' GLdouble x , BYVAL y AS DOUBLE ' GLdouble y , BYVAL width AS DOUBLE ' GLdouble width , BYVAL height AS DOUBLE ' GLdouble height , BYREF viewport AS LONG ' GLint viewport[4] ) ' void
' ========================================================================================
' void APIENTRY gluLookAt (GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx,
' GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
' Defines a viewing transformation.
' ========================================================================================
DECLARE SUB gluLookAt LIB "glu32.dll" ALIAS "gluLookAt" ( BYVAL eyex AS DOUBLE ' GLdouble eyex , BYVAL eyey AS DOUBLE ' GLdouble eyey , BYVAL eyez AS DOUBLE ' GLdouble eyez , BYVAL centerx AS DOUBLE ' GLdouble centerx , BYVAL centery AS DOUBLE ' GLdouble centery , BYVAL centerz AS DOUBLE ' GLdouble centerz , BYVAL upx AS DOUBLE ' GLdouble upx , BYVAL upy AS DOUBLE ' GLdouble upy , BYVAL upz AS DOUBLE ' GLdouble upz ) ' void
' ========================================================================================
' int APIENTRY gluProject (GLdouble objx, GLdouble objy, GLdouble objz,
' const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4],
' GLdouble *winx, GLdouble *winy, GLdouble *winz);
' The gluProject function maps object coordinates to window coordinates.
' ========================================================================================
DECLARE FUNCTION gluProject LIB "glu32.dll" ALIAS "gluProject" ( BYVAL objx AS DOUBLE ' GLdouble objx , BYVAL objy AS DOUBLE ' GLdouble objy , BYVAL objz AS DOUBLE ' GLdouble objz , BYREF modelMatrix AS DOUBLE ' const GLdouble modelMatrix[16] , BYREF projMatrix AS DOUBLE ' const GLdouble projMatrix[16] , BYREF viewport AS LONG ' const GLint viewport[4] , BYREF winx AS DOUBLE ' GLdouble *winx , BYREF winy AS DOUBLE ' GLdouble *winy , BYREF winz AS DOUBLE ' GLdouble *winz ) AS LONG ' int
' ========================================================================================
' int APIENTRY gluUnProject (GLdouble winx, GLdouble winy, GLdouble winz,
' const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4],
' GLdouble *objx, GLdouble *objy, GLdouble *objz);
' Maps window coordinates to object coordinates.
' ========================================================================================
DECLARE FUNCTION gluUnProject LIB "glu32.dll" ALIAS "gluUnProject" ( BYVAL winx AS DOUBLE ' GLdouble winx , BYVAL winy AS DOUBLE ' GLdouble winy , BYVAL winz AS DOUBLE ' GLdouble winz , BYREF modelMatrix AS DOUBLE ' const GLdouble modelMatrix[16] , BYREF projMatrix AS DOUBLE ' const GLdouble projMatrix[16] , BYREF viewport AS LONG ' const GLint viewport[4] , BYREF objx AS DOUBLE ' GLdouble *objx , BYREF objy AS DOUBLE ' GLdouble *objy , BYREF objz AS DOUBLE ' GLdouble *objz ) AS LONG ' int
' ========================================================================================
' int APIENTRY gluScaleImage (GLenum format, GLint widthin, GLint heightin, GLenum typein,
' const void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout);
' Scales an image to an arbitrary size.
' ========================================================================================
DECLARE FUNCTION gluScaleImage LIB "glu32.dll" ALIAS "gluScaleImage" ( BYVAL format AS QUAD ' GLEnum format , BYVAL widthin AS LONG ' GLint widthin , BYVAL heightin AS LONG ' GLint heightin , BYVAL typein AS QUAD ' GLEnum typein , BYREF datain AS ANY ' const void *datain , BYVAL widthout AS LONG ' GLint widthout , BYVAL heightout AS LONG ' GLint heightout , BYVAL typeout AS QUAD ' GLEnum typeout , BYREF dataout AS ANY ' void *dataout ) AS LONG ' int
' ========================================================================================
' int APIENTRY gluBuild1DMipmaps (GLenum target, GLint components, GLint width,
' GLEnum format, GLenum type, const void *data);
' Creates 1-D mipmaps.
' ========================================================================================
DECLARE FUNCTION gluBuild1DMipmaps LIB "glu32.dll" ALIAS "gluBuild1DMipmaps" ( BYVAL target AS QUAD ' GLEnum target , BYVAL components AS LONG ' GLint components , BYVAL width AS LONG ' GLint width , BYVAL format AS QUAD ' GLEnum format , BYVAL type AS QUAD ' GLEnum type , BYREF data AS ANY ' const void *data ) AS LONG ' int
' ========================================================================================
' int APIENTRY gluBuild2DMipmaps (GLenum target, GLint components, GLint width,
' GLint height, GLenum format, GLenum type, const void *data);
' Creates 2-D mipmaps.
' ========================================================================================
DECLARE FUNCTION gluBuild2DMipmaps LIB "glu32.dll" ALIAS "gluBuild2DMipmaps" ( BYVAL target AS QUAD ' GLEnum target , BYVAL components AS LONG ' GLint components , BYVAL width AS LONG ' GLint width , BYVAL height AS LONG ' GLint height , BYVAL format AS QUAD ' GLEnum format , BYVAL type AS QUAD ' GLEnum type , BYREF data AS ANY ' const void *data ) AS LONG ' int
' ========================================================================================
' GLUquadric* APIENTRY gluNewQuadric (void);
' Creates a quadric object.
' ========================================================================================
DECLARE FUNCTION gluNewQuadric LIB "glu32.dll" ALIAS "gluNewQuadric" ( ) AS QUAD ' *GLUquadric
' ========================================================================================
' void APIENTRY gluDeleteQuadric (GLUquadric *state);
' Destroys a quadric object.
' ========================================================================================
DECLARE SUB gluDeleteQuadric LIB "glu32.dll" ALIAS "gluDeleteQuadric" ( BYVAL state AS QUAD ' GLUquadric *state ) ' void
' ========================================================================================
' void APIENTRY gluQuadricNormals (GLUquadric *quadObject, GLenum normals);
' Specifies what kind of normals are to be used for quadrics.
' ========================================================================================
DECLARE SUB gluQuadricNormals LIB "glu32.dll" ALIAS "gluQuadricNormals" ( BYVAL quadObject AS QUAD ' GLUquadric *quadObject , BYVAL normals AS QUAD ' GLEnum normals ) ' void
' ========================================================================================
' void APIENTRY gluQuadricTexture (GLUquadric *quadObject, GLboolean textureCoords);
' Specifies whether quadrics are to be textured.
' ========================================================================================
DECLARE SUB gluQuadricTexture LIB "glu32.dll" ALIAS "gluQuadricTexture" ( BYVAL quadObject AS QUAD ' GLUquadric *quadObject , BYVAL textureCoords AS BYTE ' GLboolean textureCoords ) ' void
' ========================================================================================
' void APIENTRY gluQuadricOrientation (GLUquadric *quadObject, GLenum orientation);
' Specifies inside or outside orientation for quadrics.
' ========================================================================================
DECLARE SUB gluQuadricOrientation LIB "glu32.dll" ALIAS "gluQuadricOrientation" ( BYVAL quadObject AS QUAD ' GLUquadric *quadObject , BYVAL orientation AS QUAD ' GLEnum orientation ) ' void
' ========================================================================================
' void APIENTRY gluQuadricDrawStyle (GLUquadric *quadObject, GLenum drawStyle);
' Specifies the draw style desired for quadrics.
' ========================================================================================
DECLARE SUB gluQuadricDrawStyle LIB "glu32.dll" ALIAS "gluQuadricDrawStyle" ( BYVAL quadObject AS QUAD ' GLUquadric *quadObject , BYVAL drawStyle AS QUAD ' GLEnum drawStyle ) ' void
' ========================================================================================
' void APIENTRY gluCylinder (GLUquadric *qobj, GLdouble baseRadius, GLdouble topRadius,
' GLdouble height, GLint slices, GLint stacks);
' Draws a cylinder.
' ========================================================================================
DECLARE SUB gluCylinder LIB "glu32.dll" ALIAS "gluCylinder" ( BYVAL qobj AS QUAD ' GLUquadric *qobj , BYVAL baseRadius AS DOUBLE ' GLdouble baseRadius , BYVAL topRadius AS DOUBLE ' GLdouble topRadius , BYVAL height AS DOUBLE ' GLdouble height , BYVAL slices AS LONG ' GLint slices , BYVAL stacks AS LONG ' GLint stacks ) ' void
' ========================================================================================
' void APIENTRY gluDisk (GLUquadric *qobj, GLdouble innerRadius, GLdouble outerRadius,
' GLint slices, GLint loops);
' Draws a disk.
' ========================================================================================
DECLARE SUB gluDisk LIB "glu32.dll" ALIAS "gluDisk" ( BYVAL qobj AS QUAD ' GLUquadric *qobj , BYVAL innerRadius AS DOUBLE ' GLdouble innerRadius , BYVAL outerRadius AS DOUBLE ' GLdouble outerRadius , BYVAL slices AS LONG ' GLint slices , BYVAL loops AS LONG ' GLint loops ) ' void
' ========================================================================================
' void APIENTRY gluPartialDisk (GLUquadric *qobj, GLdouble innerRadius, GLdouble outerRadius,
' GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);
' Draws an arc of a disk.
' ========================================================================================
DECLARE SUB gluPartialDisk LIB "glu32.dll" ALIAS "gluPartialDisk" ( BYVAL qobj AS QUAD ' GLUquadric *qobj , BYVAL innerRadius AS DOUBLE ' GLdouble innerRadius , BYVAL outerRadius AS DOUBLE ' GLdouble outerRadius , BYVAL slices AS LONG ' GLint slices , BYVAL loops AS LONG ' GLint loops , BYVAL startAngle AS DOUBLE ' GLdouble startAngle , BYVAL sweepAngle AS DOUBLE ' GLdouble sweepAngle ) ' void
' ========================================================================================
' void APIENTRY gluSphere (GLUquadric *qobj, GLdouble radius, GLint slices, GLint stacks);
' Draws a sphere.
' ========================================================================================
DECLARE SUB gluSphere LIB "glu32.dll" ALIAS "gluSphere" ( BYVAL qobj AS QUAD ' GLUquadric *qobj , BYVAL radius AS DOUBLE ' GLdouble radius , BYVAL slices AS LONG ' GLint slices , BYVAL satcks AS LONG ' GLint satcks ) ' void
' ========================================================================================
' void APIENTRY gluQuadricCallback (GLUquadric *qobj, GLenum which, void (CALLBACK* fn)());
' Defines a callback for a quadric object.
' ========================================================================================
'SUB gluQuadricCallback ( ' BYVAL qobj AS DWORD ' GLUquadric *qobj
' , BYVAL which AS DWORD ' GLEnum which
' , BYVAL fn AS DWORD ' void (CALLBACK* fn)()
' ) ' void
' ========================================================================================
' GLUtesselator* APIENTRY gluNewTess(void );
' Creates a tessellation object.
' ========================================================================================
DECLARE FUNCTION gluNewTess LIB "glu32.dll" ALIAS "gluNewTess" ( ) AS QUAD ' *GLUtesselator
' ========================================================================================
' void APIENTRY gluDeleteTess(GLUtesselator *tess );
' Destroys a tessellation object.
' ========================================================================================
DECLARE SUB gluDeleteTess LIB "glu32.dll" ALIAS "gluDeleteTess" ( BYVAL tess AS QUAD ' GLUtesselator *tess ) ' void
' ========================================================================================
' void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data );
' Delimit a polygon description.
' ========================================================================================
DECLARE SUB gluTessBeginPolygon LIB "glu32.dll" ALIAS "gluTessBeginPolygon" ( BYVAL tess AS QUAD ' GLUtesselator *tess , BYREF polygon_data AS ANY ' void *polygon_data ) ' void
' ========================================================================================
' void APIENTRY gluTessBeginContour(GLUtesselator *tess );
' Delimits a contour description.
' ========================================================================================
DECLARE SUB gluTessBeginContour LIB "glu32.dll" ALIAS "gluTessBeginContour" ( BYVAL tess AS QUAD ' GLUtesselator *tess ) ' void
' ========================================================================================
' void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
' Specifies a vertex on a polygon.
' ========================================================================================
DECLARE SUB gluTessVertex LIB "glu32.dll" ALIAS "gluTessVertex" ( BYVAL tess AS QUAD ' GLUtesselator *tess , BYREF coords AS DOUBLE ' GLdouble coords[3] , BYREF data AS ANY ' void *data ) ' void
' ========================================================================================
' void APIENTRY gluTessEndContour(GLUtesselator *tess );
' Delimits a contour description.
' ========================================================================================
DECLARE SUB gluTessEndContour LIB "glu32.dll" ALIAS "gluTessEndContour" ( BYVAL tess AS QUAD ' GLUtesselator * tess ) ' void
' ========================================================================================
' void APIENTRY gluTessEndPolygon(GLUtesselator *tess );
' Delimits a polygon description.
' ========================================================================================
DECLARE SUB gluTessEndPolygon LIB "glu32.dll" ALIAS "gluTessEndPolygon" ( BYVAL tess AS QUAD ' GLUtesselator *tess ) ' void
' ========================================================================================
' void APIENTRY gluTessProperty(GLUtesselator *tess, GLenum which, GLdouble value);
' Sets the property of a tessellation object.
' ========================================================================================
DECLARE SUB gluTessProperty LIB "glu32.dll" ALIAS "gluTessProperty" ( BYVAL tess AS QUAD ' GLUtesselator *tess , BYVAL which AS QUAD ' GLEnum which , BYVAL value AS DOUBLE ' GLdouble value ) ' void
' ========================================================================================
' void APIENTRY gluTessNormal(GLUtesselator *tess, GLdouble x, GLdouble y, GLdouble z);
' Specifies a normal for a polygon.
' ========================================================================================
DECLARE SUB gluTessNormal LIB "glu32.dll" ALIAS "gluTessNormal" ( BYVAL tess AS QUAD ' GLUtesselator *tess , BYVAL x AS DOUBLE ' GLdouble x , BYVAL y AS DOUBLE ' GLdouble y , BYVAL z AS DOUBLE ' GLdouble z ) ' void
' ========================================================================================
' void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
' Defines a callback for a tessellation object.
' ========================================================================================
'SUB gluTessCallback ( ' BYVAL tess AS DWORD ' GLUtesselator *tess
' , BYVAL which AS DWORD ' GLEnum which
' , BYVAL fn AS DWORD ' void (CALLBACK *fn)()
' ) ' void
' ========================================================================================
' void APIENTRY gluGetTessProperty(GLUtesselator *tess, GLenum which, GLdouble *value );
' Sets the property of a tessellation object.
' ========================================================================================
DECLARE SUB gluGetTessProperty LIB "glu32.dll" ALIAS "gluGetTessProperty" ( BYVAL tess AS QUAD ' GLUtesselator *tess , BYVAL which AS QUAD ' GLEnum which , BYREF value AS DOUBLE ' GLdouble *value ) ' void
' ========================================================================================
' GLUnurbs* APIENTRY gluNewNurbsRenderer (void);
' Creates a NURBS object.
' ========================================================================================
DECLARE FUNCTION gluNewNurbsRenderer LIB "glu32.dll" ALIAS "gluNewNurbsRenderer" ( ) AS QUAD ' *GLUnurbs
' ========================================================================================
' void APIENTRY gluDeleteNurbsRenderer (GLUnurbs *nobj);
' Destroys a NURBS object.
' ========================================================================================
DECLARE SUB gluDeleteNurbsRenderer LIB "glu32.dll" ALIAS "gluDeleteNurbsRenderer" ( BYVAL nObj AS QUAD ' GLUnurbs *nObj ) ' void
' ========================================================================================
' void APIENTRY gluBeginSurface (GLUnurbs *nobj);
' Delimits a NURBS surface definition.
' ========================================================================================
DECLARE SUB gluBeginSurface LIB "glu32.dll" ALIAS "gluBeginSurface" ( BYVAL nObj AS QUAD ' GLUnurbs *nObj ) ' void
' ========================================================================================
' void APIENTRY gluBeginCurve (GLUnurbs *nobj);
' Delimits a Non-Uniform Rational B-Spline (NURBS) curve definition.
' ========================================================================================
DECLARE SUB gluBeginCurve LIB "glu32.dll" ALIAS "gluBeginCurve" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj ) ' void
' ========================================================================================
' void APIENTRY gluEndCurve (GLUnurbs *nobj);
' Delimits a Non-Uniform Rational B-Spline (NURBS) curve definition.
' ========================================================================================
DECLARE SUB gluEndCurve LIB "glu32.dll" ALIAS "gluEndCurve" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj ) ' void
' ========================================================================================
' void APIENTRY gluEndSurface (GLUnurbs *nobj);
' Delimits a NURBS surface definition.
' ========================================================================================
DECLARE SUB gluEndSurface LIB "glu32.dll" ALIAS "gluEndSurface" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj ) ' void
' ========================================================================================
' void APIENTRY gluBeginTrim (GLUnurbs *nobj);
' Delimits a NURBS trimming loop definition.
' ========================================================================================
DECLARE SUB gluBeginTrim LIB "glu32.dll" ALIAS "gluBeginTrim" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj ) ' void
' ========================================================================================
' void APIENTRY gluEndTrim (GLUnurbs *nobj);
' Delimits a NURBS trimming loop definition.
' ========================================================================================
DECLARE SUB gluEndTrim LIB "glu32.dll" ALIAS "gluEndTrim" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj ) ' void
' ========================================================================================
' void APIENTRY gluPwlCurve (GLUnurbs *nobj, GLint count, GLfloat *array, GLint stride, GLenum type);
' Describes a piecewise linear NURBS trimming curve.
' ========================================================================================
DECLARE SUB gluPwlCurve LIB "glu32.dll" ALIAS "gluPwlCurve" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj , BYVAL count AS LONG ' GLint count , BYREF array AS SINGLE ' GLfloat *array , BYVAL stride AS LONG ' GLint stride , BYVAL type AS QUAD ' GLEnum type ) ' void
' ========================================================================================
' void APIENTRY gluNurbsCurve (GLUnurbs *nobj, GLint nknots, GLfloat *knot, GLint stride,
' GLfloat *ctlarray, GLint order, GLenum type);
' Defines the shape of a NURBS curve.
' ========================================================================================
DECLARE SUB gluNurbsCurve LIB "glu32.dll" ALIAS "gluNurbsCurve" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj , BYVAL nknots AS LONG ' GLint nknots , BYREF knot AS SINGLE ' GLfloat *knot , BYVAL stride AS LONG ' GLint stride , BYREF ctlarray AS SINGLE ' GLfloat *ctlarray , BYVAL order AS LONG ' GLint order , BYVAL type AS QUAD ' GLEnum type ) ' void
' ========================================================================================
' void APIENTRY gluNurbsSurface(GLUnurbs *nobj, GLint sknot_count, GLfloat *sknot,
' GLint tknot_count, GLfloat *tknot, GLint s_stride, GLint t_stride, GLfloat *ctlarray,
' GLint sorder, GLint torder, GLenum type);
' Defines the shape of a NURBS surface.
' ========================================================================================
DECLARE SUB gluNurbsSurface LIB "glu32.dll" ALIAS "gluNurbsSurface" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj , BYVAL sknot_count AS LONG ' GLint sknot_count , BYREF sknot AS SINGLE ' GLfloat *sknot , BYVAL tknot_count AS LONG ' GLint tknot_count , BYREF tknot AS SINGLE ' GLfloat tknot , BYVAL s_stride AS LONG ' GLint s_stride , BYVAL t_stride AS LONG ' GLint t_stride , BYREF ctlarray AS SINGLE ' GLfloat ctlarray , BYVAL sorder AS LONG ' GLint sorder , BYVAL torder AS LONG ' GLint torder , BYVAL type AS QUAD ' GLEnum type ) ' void
' ========================================================================================
' void APIENTRY gluLoadSamplingMatrices (GLUnurbs *nobj, const GLfloat modelMatrix[16],
' const GLfloat projMatrix[16], const GLint viewport[4] );
' Loads NURBS sampling and culling matrices.
' ========================================================================================
DECLARE SUB gluLoadSamplingMatrices LIB "glu32.dll" ALIAS "gluLoadSamplingMatrices" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj , BYREF modelMatrix AS SINGLE ' const GLfloat modelMatrix[16] , BYREF projMatrix AS SINGLE ' const GLfloat projMatrix[16] , BYREF viewport AS LONG ' const GLint viewport[4] ) ' void
' ========================================================================================
' void APIENTRY gluNurbsProperty (GLUnurbs *nobj, GLenum property, GLfloat value );
' Sets a NURBS property.
' ========================================================================================
DECLARE SUB gluNurbsProperty LIB "glu32.dll" ALIAS "gluNurbsProperty" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj , BYVAL property AS QUAD ' GLEnum property , BYVAL value AS SINGLE ' GLfloat value ) ' void
' ========================================================================================
' void APIENTRY gluGetNurbsProperty (GLUnurbs *nobj, GLenum property, GLfloat *value );
' Gets a NURBS property.
' ========================================================================================
DECLARE SUB gluGetNurbsProperty LIB "glu32.dll" ALIAS "gluGetNurbsProperty" ( BYVAL nobj AS QUAD ' GLUnurbs *nobj , BYVAL property AS QUAD ' GLEnum property , BYREF value AS SINGLE ' GLfloat *value ) ' void
' ========================================================================================
' void APIENTRY gluNurbsCallback (GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)() );
' Defines a callback for a NURBS object.
' ========================================================================================
'SUB gluNurbsCallback ( ' BYVAL nobj AS DWORD ' GLUnurbs *nobj
' , BYVAL which AS DWORD ' GLEnum which
' , BYVAL fn AS DWORD ' void (CALLBACK* fn)()
' ) ' void
'/**** Callback function prototypes ****/
'/* gluQuadricCallback */
'typedef void (CALLBACK* GLUquadricErrorProc) (GLenum);
'SUB GLUquadricErrorProc(BYVAL DWORD)
'/* gluTessCallback */
'typedef void (CALLBACK* GLUtessBeginProc) (GLenum);
' SUB GLUtessBeginProc (BYVAL DWORD)
'typedef void (CALLBACK* GLUtessEdgeFlagProc) (GLboolean);
'SUB GLUtessEdgeFlagProc (BYVAL BYTE)
'typedef void (CALLBACK* GLUtessVertexProc) (void *);
'SUB GLUtessVertexProc (BYVAL DWORD)
'typedef void (CALLBACK* GLUtessEndProc) (void);
'SUB GLUtessEndProc (BYVAL DWORD)
'typedef void (CALLBACK* GLUtessErrorProc) (GLenum);
'SUB GLUtessErrorProc (BYVAL DWORD)
'typedef void (CALLBACK* GLUtessCombineProc) (GLdouble[3],
' void*[4],
' GLfloat[4],
' void** );
' SUB GLUtessCombineProc (BYREF DOUBLE, BYREF DWORD, BYREF SINGLE, BYREF DWORD)
'typedef void (CALLBACK* GLUtessBeginDataProc) (GLenum, void *);
'SUB GLUtessBeginDataProc (BYVAL DWORD, BYVAL DWORD)
'typedef void (CALLBACK* GLUtessEdgeFlagDataProc) (GLboolean, void *);
'SUB GLUtessEdgeFlagDataProc (BYVAL BYTE, BYVAL DWORD)
'typedef void (CALLBACK* GLUtessVertexDataProc) (void *, void *);
'SUB GLUtessVertexDataProc (BYVAL DWORD, BYVAL DWORD)
'typedef void (CALLBACK* GLUtessEndDataProc) (void *);
'SUB GLUtessEndDataProc (BYVAL DWORD)
'typedef void (CALLBACK* GLUtessErrorDataProc) (GLenum, void *);
'SUB GLUtessErrorDataProc (BYVAL DWORD, BYVAL DWORD)
'typedef void (CALLBACK* GLUtessCombineDataProc) (GLdouble[3],
' void*[4],
' GLfloat[4],
' void**,
' void* );
'SUB GLUtessCombineDataProc (BYREF DOUBLE, BYREF DWORD, BYREF SINGLE, BYREF DWORD, BYVAL DWORD)
'/* gluNurbsCallback */
'typedef void (CALLBACK* GLUnurbsErrorProc) (GLenum);
' SUB GLUnurbsErrorProc (BYVAL DWORD)
'/**** Generic constants ****/
'/* Version */
%EQUATE `GLU_VERSION_1_1 = 1
%EQUATE `GLU_VERSION_1_2 = 1
'/* Errors: (return value 0 = no error) */
%EQUATE `GLU_INVALID_ENUM = 100900
%EQUATE `GLU_INVALID_VALUE = 100901
%EQUATE `GLU_OUT_OF_MEMORY = 100902
%EQUATE `GLU_INCOMPATIBLE_GL_VERSION = 100903
'/* StringName */
%EQUATE `GLU_VERSION = 100800
%EQUATE `GLU_EXTENSIONS = 100801
'/* Boolean */
%EQUATE `GLU_TRUE = %GL_TRUE
%EQUATE `GLU_FALSE = %GL_FALSE
'/**** Quadric constants ****/
'/* QuadricNormal */
%EQUATE `GLU_SMOOTH = 100000
%EQUATE `GLU_FLAT = 100001
%EQUATE `GLU_NONE = 100002
'/* QuadricDrawStyle */
%EQUATE `GLU_POINT = 100010
%EQUATE `GLU_LINE = 100011
%EQUATE `GLU_FILL = 100012
%EQUATE `GLU_SILHOUETTE = 100013
'/* QuadricOrientation */
%EQUATE `GLU_OUTSIDE = 100020
%EQUATE `GLU_INSIDE = 100021
'/* Callback types: */
'/* GLU_ERROR 100103 */
'/**** Tesselation constants ****/
MACRO GLU_TESS_MAX_COORD = 1.0e150
'/* TessProperty */
%EQUATE `GLU_TESS_WINDING_RULE = 100140
%EQUATE `GLU_TESS_BOUNDARY_ONLY = 100141
%EQUATE `GLU_TESS_TOLERANCE = 100142
'/* TessWinding */
%EQUATE `GLU_TESS_WINDING_ODD = 100130
%EQUATE `GLU_TESS_WINDING_NONZERO = 100131
%EQUATE `GLU_TESS_WINDING_POSITIVE = 100132
%EQUATE `GLU_TESS_WINDING_NEGATIVE = 100133
%EQUATE `GLU_TESS_WINDING_ABS_GEQ_TWO = 100134
'/* TessCallback */
%EQUATE `GLU_TESS_BEGIN = 100100 '/* void (CALLBACK*)(GLenum type) */
%EQUATE `GLU_TESS_VERTEX = 100101 '/* void (CALLBACK*)(void *data) */
%EQUATE `GLU_TESS_END = 100102 '/* void (CALLBACK*)(void) */
%EQUATE `GLU_TESS_ERROR = 100103 '/* void (CALLBACK*)(GLenum errno) */
%EQUATE `GLU_TESS_EDGE_FLAG = 100104 '/* void (CALLBACK*)(GLboolean boundaryEdge) */
%EQUATE `GLU_TESS_COMBINE = 100105 '/* void (CALLBACK*)(GLdouble coords[3],
 ' void *data[4],
 ' GLfloat weight[4],
 ' void **dataOut) */
%EQUATE `GLU_TESS_BEGIN_DATA = 100106 '/* void (CALLBACK*)(GLenum type,
 ' void *polygon_data) */
%EQUATE `GLU_TESS_VERTEX_DATA = 100107 '/* void (CALLBACK*)(void *data,
 ' void *polygon_data) */
%EQUATE `GLU_TESS_END_DATA = 100108 '/* void (CALLBACK*)(void *polygon_data) */
%EQUATE `GLU_TESS_ERROR_DATA = 100109 '/* void (CALLBACK*)(GLenum errno,
 ' void *polygon_data) */
%EQUATE `GLU_TESS_EDGE_FLAG_DATA = 100110 '/* void (CALLBACK*)(GLboolean boundaryEdge,
 ' void *polygon_data) */
%EQUATE `GLU_TESS_COMBINE_DATA = 100111 '/* void (CALLBACK*)(GLdouble coords[3],
 ' void *data[4],
 ' GLfloat weight[4],
 ' void **dataOut,
 ' void *polygon_data) */
'/* TessError */
%EQUATE `GLU_TESS_ERROR1 = 100151
%EQUATE `GLU_TESS_ERROR2 = 100152
%EQUATE `GLU_TESS_ERROR3 = 100153
%EQUATE `GLU_TESS_ERROR4 = 100154
%EQUATE `GLU_TESS_ERROR5 = 100155
%EQUATE `GLU_TESS_ERROR6 = 100156
%EQUATE `GLU_TESS_ERROR7 = 100157
%EQUATE `GLU_TESS_ERROR8 = 100158
%EQUATE `GLU_TESS_MISSING_BEGIN_POLYGON = %GLU_TESS_ERROR1
%EQUATE `GLU_TESS_MISSING_BEGIN_CONTOUR = %GLU_TESS_ERROR2
%EQUATE `GLU_TESS_MISSING_END_POLYGON = %GLU_TESS_ERROR3
%EQUATE `GLU_TESS_MISSING_END_CONTOUR = %GLU_TESS_ERROR4
%EQUATE `GLU_TESS_COORD_TOO_LARGE = %GLU_TESS_ERROR5
%EQUATE `GLU_TESS_NEED_COMBINE_CALLBACK = %GLU_TESS_ERROR6
'/**** NURBS constants ****/
'/* NurbsProperty */
%EQUATE `GLU_AUTO_LOAD_MATRIX = 100200
%EQUATE `GLU_CULLING = 100201
%EQUATE `GLU_SAMPLING_TOLERANCE = 100203
%EQUATE `GLU_DISPLAY_MODE = 100204
%EQUATE `GLU_PARAMETRIC_TOLERANCE = 100202
%EQUATE `GLU_SAMPLING_METHOD = 100205
%EQUATE `GLU_U_STEP = 100206
%EQUATE `GLU_V_STEP = 100207
'/* NurbsSampling */
%EQUATE `GLU_PATH_LENGTH = 100215
%EQUATE `GLU_PARAMETRIC_ERROR = 100216
%EQUATE `GLU_DOMAIN_DISTANCE = 100217
'/* NurbsTrim */
%EQUATE `GLU_MAP1_TRIM_2 = 100210
%EQUATE `GLU_MAP1_TRIM_3 = 100211
'/* NurbsDisplay */
'/* GLU_FILL 100012 */
%EQUATE `GLU_OUTLINE_POLYGON = 100240
%EQUATE `GLU_OUTLINE_PATCH = 100241
'/* NurbsCallback */
'/* GLU_ERROR 100103 */
'/* NurbsErrors */
%EQUATE `GLU_NURBS_ERROR1 = 100251
%EQUATE `GLU_NURBS_ERROR2 = 100252
%EQUATE `GLU_NURBS_ERROR3 = 100253
%EQUATE `GLU_NURBS_ERROR4 = 100254
%EQUATE `GLU_NURBS_ERROR5 = 100255
%EQUATE `GLU_NURBS_ERROR6 = 100256
%EQUATE `GLU_NURBS_ERROR7 = 100257
%EQUATE `GLU_NURBS_ERROR8 = 100258
%EQUATE `GLU_NURBS_ERROR9 = 100259
%EQUATE `GLU_NURBS_ERROR10 = 100260
%EQUATE `GLU_NURBS_ERROR11 = 100261
%EQUATE `GLU_NURBS_ERROR12 = 100262
%EQUATE `GLU_NURBS_ERROR13 = 100263
%EQUATE `GLU_NURBS_ERROR14 = 100264
%EQUATE `GLU_NURBS_ERROR15 = 100265
%EQUATE `GLU_NURBS_ERROR16 = 100266
%EQUATE `GLU_NURBS_ERROR17 = 100267
%EQUATE `GLU_NURBS_ERROR18 = 100268
%EQUATE `GLU_NURBS_ERROR19 = 100269
%EQUATE `GLU_NURBS_ERROR20 = 100270
%EQUATE `GLU_NURBS_ERROR21 = 100271
%EQUATE `GLU_NURBS_ERROR22 = 100272
%EQUATE `GLU_NURBS_ERROR23 = 100273
%EQUATE `GLU_NURBS_ERROR24 = 100274
%EQUATE `GLU_NURBS_ERROR25 = 100275
%EQUATE `GLU_NURBS_ERROR26 = 100276
%EQUATE `GLU_NURBS_ERROR27 = 100277
%EQUATE `GLU_NURBS_ERROR28 = 100278
%EQUATE `GLU_NURBS_ERROR29 = 100279
%EQUATE `GLU_NURBS_ERROR30 = 100280
%EQUATE `GLU_NURBS_ERROR31 = 100281
%EQUATE `GLU_NURBS_ERROR32 = 100282
%EQUATE `GLU_NURBS_ERROR33 = 100283
%EQUATE `GLU_NURBS_ERROR34 = 100284
%EQUATE `GLU_NURBS_ERROR35 = 100285
%EQUATE `GLU_NURBS_ERROR36 = 100286
%EQUATE `GLU_NURBS_ERROR37 = 100287
'/**** Backwards compatibility for old tesselator ****/
' ========================================================================================
' void APIENTRY gluBeginPolygon(GLUtesselator *tess);
' Delimits a polygon description.
' ========================================================================================
DECLARE SUB gluBeginPolygon LIB "glu32.dll" ALIAS "gluBeginPolygon" ( BYVAL tess AS QUAD ' GLUtesselator *tess ) ' void
' ========================================================================================
' void APIENTRY gluNextContour(GLUtesselator *tess, GLenum type );
' Marks the beginning of another contour.
' ========================================================================================
DECLARE SUB gluNextContour LIB "glu32.dll" ALIAS "gluNextContour" ( BYVAL tess AS QUAD ' GLUtesselator *tess , BYVAL type AS QUAD ' GLEnum type ) ' void
' ========================================================================================
' void APIENTRY gluEndPolygon(GLUtesselator *tess);
' ========================================================================================
DECLARE SUB gluEndPolygon LIB "glu32.dll" ALIAS "gluEndPolygon" ( BYVAL tess AS QUAD ' GLUtesselator *tess ) ' void
'/* Contours types -- obsolete! */
%EQUATE `GLU_CW = 100120
%EQUATE `GLU_CCW = 100121
%EQUATE `GLU_INTERIOR = 100122
%EQUATE `GLU_EXTERIOR = 100123
%EQUATE `GLU_UNKNOWN = 100124
'/* Names without "TESS_" prefix */
%EQUATE `GLU_BEGIN = %GLU_TESS_BEGIN
%EQUATE `GLU_VERTEX = %GLU_TESS_VERTEX
%EQUATE `GLU_END = %GLU_TESS_END
%EQUATE `GLU_ERROR = %GLU_TESS_ERROR
%EQUATE `GLU_EDGE_FLAG = %GLU_TESS_EDGE_FLAG
#ENDIF
