OpenGL_GLU_v4.cs
// Copyright 2012 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // // ############################################################################ // ############################################################################ // ############################################################################ // ############################################################################ // // Namespace: OpenGL // Class: GLU // File Version: 4.0 (2003 Feb 14; Second Public Release) // // Description: C# Wrapper for OpenGL GLU API. // // WARNING: This class must be compiled using the /unsafe C# compiler switch // since many OpenGL functions involve pointers. // // Development Notes: // // This file was almost entirely generated from the following file: // "C:\\Program Files\\Microsoft Visual Studio\\VC98\\Include\\GL\\GLU.H" // (18,282 bytes; Friday, April 24, 1998, 12:00:00 AM). // // All aspects of GLU.H were converted and emitted as C# code, // except for typedefs (such as typedefs of function pointers // for OpenGL extensions). All pointer types in arguments and return // types has been preserved. Callbacks function pointers and other // pointers to complex types have all been flattened to IntPtr pointers. // // After exposing all constants and functions as closely as possible to // the original "C" code prototypes, we expose any function involving pointers // again, overloading the same function name, but changing pointer types to // C# array types (e.g., float[] instead of float *), or using the "IntPtr" // type. These convenient function overloads appear after all of the // "faithful" versions of the GLU functions // // Planned Modifications: // // Functions returning values need to be implemented. This is simply // something that was just a little too tricky for my automated file conversion. // // Future Versions of this File: // // This file is the first public release of a particular C# wrapper for // the GLU portion of the OpenGL API. Please visit the following web page // for updates to this file: // // http://www.colinfahey.com/opengl/csharp.htm // // Send any bug reports or minor implementation enhancement suggestions // to the following e-mail address: // // cpfahey@earthlink.net (Colin P. Fahey) // // ############################################################################ // ############################################################################ // ############################################################################ // ############################################################################ // // using System; using System.Runtime.InteropServices; // Necessary for [DllImport(...)] namespace OpenGL { [ComVisible(false)] public class GLU { public const string GLU_DLL = "glu32"; // // ############################################################################ // ############################################################################ // ############################################################################ // ############################################################################ // // /*++ 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. */ /* ** 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); */ /* backwards compatibility: */ /* backwards compatibility: */ /**** Callback function prototypes ****/ /* gluQuadricCallback */ /* gluTessCallback */ /* gluNurbsCallback */ /**** Generic constants ****/ /* Version */ public const uint GLU_VERSION_1_1 = 1; public const uint GLU_VERSION_1_2 = 1; /* Errors: (return value 0 = no error) */ public const uint GLU_INVALID_ENUM = 100900; public const uint GLU_INVALID_VALUE = 100901; public const uint GLU_OUT_OF_MEMORY = 100902; public const uint GLU_INCOMPATIBLE_GL_VERSION = 100903; /* StringName */ public const uint GLU_VERSION = 100800; public const uint GLU_EXTENSIONS = 100801; /* Boolean */ public const uint GLU_TRUE = 1; // GL_TRUE; public const uint GLU_FALSE = 0; // GL_FALSE; /**** Quadric constants ****/ /* QuadricNormal */ public const uint GLU_SMOOTH = 100000; public const uint GLU_FLAT = 100001; public const uint GLU_NONE = 100002; /* QuadricDrawStyle */ public const uint GLU_POINT = 100010; public const uint GLU_LINE = 100011; public const uint GLU_FILL = 100012; public const uint GLU_SILHOUETTE = 100013; /* QuadricOrientation */ public const uint GLU_OUTSIDE = 100020; public const uint GLU_INSIDE = 100021; /* Callback types: */ /* GLU_ERROR 100103 */ /**** Tesselation constants ****/ public const double GLU_TESS_MAX_COORD = 1.0e150; /* TessProperty */ public const uint GLU_TESS_WINDING_RULE = 100140; public const uint GLU_TESS_BOUNDARY_ONLY = 100141; public const uint GLU_TESS_TOLERANCE = 100142; /* TessWinding */ public const uint GLU_TESS_WINDING_ODD = 100130; public const uint GLU_TESS_WINDING_NONZERO = 100131; public const uint GLU_TESS_WINDING_POSITIVE = 100132; public const uint GLU_TESS_WINDING_NEGATIVE = 100133; public const uint GLU_TESS_WINDING_ABS_GEQ_TWO = 100134; /* TessCallback */ public const uint GLU_TESS_BEGIN = 100100;/* void (CALLBACK*)(GLenum type) */ public const uint GLU_TESS_VERTEX = 100101;/* void (CALLBACK*)(void *data) */ public const uint GLU_TESS_END = 100102;/* void (CALLBACK*)(void) */ public const uint GLU_TESS_ERROR = 100103;/* void (CALLBACK*)(GLenum errno) */ public const uint GLU_TESS_EDGE_FLAG = 100104;/* void (CALLBACK*)(GLboolean boundaryEdge) */ public const uint GLU_TESS_COMBINE = 100105;/* void (CALLBACK*)(GLdouble coords[3], void *data[4], GLfloat weight[4], void **dataOut) */ public const uint GLU_TESS_BEGIN_DATA = 100106;/* void (CALLBACK*)(GLenum type, void *polygon_data) */ public const uint GLU_TESS_VERTEX_DATA = 100107;/* void (CALLBACK*)(void *data, void *polygon_data) */ public const uint GLU_TESS_END_DATA = 100108;/* void (CALLBACK*)(void *polygon_data) */ public const uint GLU_TESS_ERROR_DATA = 100109;/* void (CALLBACK*)(GLenum errno, void *polygon_data) */ public const uint GLU_TESS_EDGE_FLAG_DATA = 100110;/* void (CALLBACK*)(GLboolean boundaryEdge, void *polygon_data) */ public const uint GLU_TESS_COMBINE_DATA = 100111;/* void (CALLBACK*)(GLdouble coords[3], void *data[4], GLfloat weight[4], void **dataOut, void *polygon_data) */ /* TessError */ public const uint GLU_TESS_ERROR1 = 100151; public const uint GLU_TESS_ERROR2 = 100152; public const uint GLU_TESS_ERROR3 = 100153; public const uint GLU_TESS_ERROR4 = 100154; public const uint GLU_TESS_ERROR5 = 100155; public const uint GLU_TESS_ERROR6 = 100156; public const uint GLU_TESS_ERROR7 = 100157; public const uint GLU_TESS_ERROR8 = 100158; public const uint GLU_TESS_MISSING_BEGIN_POLYGON = GLU_TESS_ERROR1; public const uint GLU_TESS_MISSING_BEGIN_CONTOUR = GLU_TESS_ERROR2; public const uint GLU_TESS_MISSING_END_POLYGON = GLU_TESS_ERROR3; public const uint GLU_TESS_MISSING_END_CONTOUR = GLU_TESS_ERROR4; public const uint GLU_TESS_COORD_TOO_LARGE = GLU_TESS_ERROR5; public const uint GLU_TESS_NEED_COMBINE_CALLBACK = GLU_TESS_ERROR6; /**** NURBS constants ****/ /* NurbsProperty */ public const uint GLU_AUTO_LOAD_MATRIX = 100200; public const uint GLU_CULLING = 100201; public const uint GLU_SAMPLING_TOLERANCE = 100203; public const uint GLU_DISPLAY_MODE = 100204; public const uint GLU_PARAMETRIC_TOLERANCE = 100202; public const uint GLU_SAMPLING_METHOD = 100205; public const uint GLU_U_STEP = 100206; public const uint GLU_V_STEP = 100207; /* NurbsSampling */ public const uint GLU_PATH_LENGTH = 100215; public const uint GLU_PARAMETRIC_ERROR = 100216; public const uint GLU_DOMAIN_DISTANCE = 100217; /* NurbsTrim */ public const uint GLU_MAP1_TRIM_2 = 100210; public const uint GLU_MAP1_TRIM_3 = 100211; /* NurbsDisplay */ /* GLU_FILL 100012 */ public const uint GLU_OUTLINE_POLYGON = 100240; public const uint GLU_OUTLINE_PATCH = 100241; /* NurbsCallback */ /* GLU_ERROR 100103 */ /* NurbsErrors */ public const uint GLU_NURBS_ERROR1 = 100251; public const uint GLU_NURBS_ERROR2 = 100252; public const uint GLU_NURBS_ERROR3 = 100253; public const uint GLU_NURBS_ERROR4 = 100254; public const uint GLU_NURBS_ERROR5 = 100255; public const uint GLU_NURBS_ERROR6 = 100256; public const uint GLU_NURBS_ERROR7 = 100257; public const uint GLU_NURBS_ERROR8 = 100258; public const uint GLU_NURBS_ERROR9 = 100259; public const uint GLU_NURBS_ERROR10 = 100260; public const uint GLU_NURBS_ERROR11 = 100261; public const uint GLU_NURBS_ERROR12 = 100262; public const uint GLU_NURBS_ERROR13 = 100263; public const uint GLU_NURBS_ERROR14 = 100264; public const uint GLU_NURBS_ERROR15 = 100265; public const uint GLU_NURBS_ERROR16 = 100266; public const uint GLU_NURBS_ERROR17 = 100267; public const uint GLU_NURBS_ERROR18 = 100268; public const uint GLU_NURBS_ERROR19 = 100269; public const uint GLU_NURBS_ERROR20 = 100270; public const uint GLU_NURBS_ERROR21 = 100271; public const uint GLU_NURBS_ERROR22 = 100272; public const uint GLU_NURBS_ERROR23 = 100273; public const uint GLU_NURBS_ERROR24 = 100274; public const uint GLU_NURBS_ERROR25 = 100275; public const uint GLU_NURBS_ERROR26 = 100276; public const uint GLU_NURBS_ERROR27 = 100277; public const uint GLU_NURBS_ERROR28 = 100278; public const uint GLU_NURBS_ERROR29 = 100279; public const uint GLU_NURBS_ERROR30 = 100280; public const uint GLU_NURBS_ERROR31 = 100281; public const uint GLU_NURBS_ERROR32 = 100282; public const uint GLU_NURBS_ERROR33 = 100283; public const uint GLU_NURBS_ERROR34 = 100284; public const uint GLU_NURBS_ERROR35 = 100285; public const uint GLU_NURBS_ERROR36 = 100286; public const uint GLU_NURBS_ERROR37 = 100287; /**** Backwards compatibility for old tesselator ****/ /* Contours types -- obsolete! */ public const uint GLU_CW = 100120; public const uint GLU_CCW = 100121; public const uint GLU_INTERIOR = 100122; public const uint GLU_EXTERIOR = 100123; public const uint GLU_UNKNOWN = 100124; /* Names without "TESS_" prefix */ public const uint GLU_BEGIN = GLU_TESS_BEGIN; public const uint GLU_VERTEX = GLU_TESS_VERTEX; public const uint GLU_END = GLU_TESS_END; public const uint GLU_ERROR = GLU_TESS_ERROR; public const uint GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG; /* __GLU_H__ */ /* __glu_h__ */ // // // ############################################################################ // ############################################################################ // ############################################################################ // ############################################################################ // // // OpenGL functions from GL.H with pointer types intact. // // [DllImport(GLU_DLL)] public unsafe static extern byte * gluErrorString ( uint errCode ); [DllImport(GLU_DLL)] public unsafe static extern byte * gluGetString ( uint name ); [DllImport(GLU_DLL)] public unsafe static extern void gluOrtho2D ( double left, double right, double bottom, double top ); [DllImport(GLU_DLL)] public unsafe static extern void gluPerspective ( double fovy, double aspect, double zNear, double zFar ); [DllImport(GLU_DLL)] public unsafe static extern void gluPickMatrix ( double x, double y, double width, double height, int viewport ); [DllImport(GLU_DLL)] public unsafe static extern void gluLookAt ( double eyex, double eyey, double eyez, double centerx, double centery, double centerz, double upx, double upy, double upz ); [DllImport(GLU_DLL)] public unsafe static extern int gluProject ( double objx, double objy, double objz, double[] modelMatrix, double[] projMatrix, int[] viewport, double * winx, double * winy, double * winz ); [DllImport(GLU_DLL)] public unsafe static extern int gluUnProject ( double winx, double winy, double winz, double modelMatrix, double projMatrix, int viewport, double * objx, double * objy, double * objz ); [DllImport(GLU_DLL)] public unsafe static extern int gluScaleImage ( uint format, int widthin, int heightin, uint typein, void * datain, int widthout, int heightout, uint typeout, void * dataout ); [DllImport(GLU_DLL)] public unsafe static extern int gluBuild1DMipmaps ( uint target, int components, int width, uint format, uint type, void * data ); [DllImport(GLU_DLL)] public unsafe static extern int gluBuild2DMipmaps ( uint target, int components, int width, int height, uint format, uint type, void * data ); [DllImport(GLU_DLL)] public unsafe static extern void * gluNewQuadric ( ); [DllImport(GLU_DLL)] public unsafe static extern void gluDeleteQuadric ( void * state ); [DllImport(GLU_DLL)] public unsafe static extern void gluQuadricNormals ( void * quadObject, uint normals ); [DllImport(GLU_DLL)] public unsafe static extern void gluQuadricTexture ( void * quadObject, byte textureCoords ); [DllImport(GLU_DLL)] public unsafe static extern void gluQuadricOrientation ( void * quadObject, uint orientation ); [DllImport(GLU_DLL)] public unsafe static extern void gluQuadricDrawStyle ( void * quadObject, uint drawStyle ); [DllImport(GLU_DLL)] public unsafe static extern void gluCylinder ( void * qobj, double baseRadius, double topRadius, double height, int slices, int stacks ); [DllImport(GLU_DLL)] public unsafe static extern void gluDisk ( void * qobj, double innerRadius, double outerRadius, int slices, int loops ); [DllImport(GLU_DLL)] public unsafe static extern void gluPartialDisk ( void * qobj, double innerRadius, double outerRadius, int slices, int loops, double startAngle, double sweepAngle ); [DllImport(GLU_DLL)] public unsafe static extern void gluSphere ( void * qobj, double radius, int slices, int stacks ); [DllImport(GLU_DLL)] public unsafe static extern void gluQuadricCallback ( void * qobj, uint which, IntPtr fn ); [DllImport(GLU_DLL)] public unsafe static extern void * gluNewTess ( ); [DllImport(GLU_DLL)] public unsafe static extern void gluDeleteTess ( void * tess ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessBeginPolygon ( void * tess, void * polygon_data ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessBeginContour ( void * tess ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessVertex ( void * tess, double coords, void * data ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessEndContour ( void * tess ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessEndPolygon ( void * tess ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessProperty ( void * tess, uint which, double valuex ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessNormal ( void * tess, double x, double y, double z ); [DllImport(GLU_DLL)] public unsafe static extern void gluTessCallback ( void * tess, uint which, IntPtr fn ); [DllImport(GLU_DLL)] public unsafe static extern void gluGetTessProperty ( void * tess, uint which, double * valuex ); [DllImport(GLU_DLL)] public unsafe static extern void * gluNewNurbsRenderer ( ); [DllImport(GLU_DLL)] public unsafe static extern void gluDeleteNurbsRenderer ( void * nobj ); [DllImport(GLU_DLL)] public unsafe static extern void gluBeginSurface ( void * nobj ); [DllImport(GLU_DLL)] public unsafe static extern void gluBeginCurve ( void * nobj ); [DllImport(GLU_DLL)] public unsafe static extern void gluEndCurve ( void * nobj ); [DllImport(GLU_DLL)] public unsafe static extern void gluEndSurface ( void * nobj ); [DllImport(GLU_DLL)] public unsafe static extern void gluBeginTrim ( void * nobj ); [DllImport(GLU_DLL)] public unsafe static extern void gluEndTrim ( void * nobj ); [DllImport(GLU_DLL)] public unsafe static extern void gluPwlCurve ( void * nobj, int count, float * array, int stride, uint type ); [DllImport(GLU_DLL)] public unsafe static extern void gluNurbsCurve ( void * nobj, int nknots, float * knot, int stride, float * ctlarray, int order, uint type ); [DllImport(GLU_DLL)] public unsafe static extern void gluNurbsSurface ( void * nobj, int sknot_count, float * sknot, int tknot_count, float * tknot, int s_stride, int t_stride, float * ctlarray, int sorder, int torder, uint type ); [DllImport(GLU_DLL)] public unsafe static extern void gluLoadSamplingMatrices ( void * nobj, float modelMatrix, float projMatrix, int viewport ); [DllImport(GLU_DLL)] public unsafe static extern void gluNurbsProperty ( void * nobj, uint property, float valuex ); [DllImport(GLU_DLL)] public unsafe static extern void gluGetNurbsProperty ( void * nobj, uint property, float * valuex ); [DllImport(GLU_DLL)] public unsafe static extern void gluNurbsCallback ( void * nobj, uint which, IntPtr fn ); [DllImport(GLU_DLL)] public unsafe static extern void gluBeginPolygon ( void * tess ); [DllImport(GLU_DLL)] public unsafe static extern void gluNextContour ( void * tess, uint type ); [DllImport(GLU_DLL)] public unsafe static extern void gluEndPolygon ( void * tess ); // // // ############################################################################ // ############################################################################ // ############################################################################ // ############################################################################ // // // C# Alternative Overrides for OpenGL functions involving pointers. // // // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static byte[] gluErrorString ( uint errCode ) { gluErrorString( errCode ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static byte[] gluGetString ( uint name ) { gluGetString( name ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static int gluProject ( double objx, double objy, double objz, double modelMatrix, double projMatrix, int viewport, double[] winx, double[] winy, double[] winz ) { fixed ( double * p_winx = winx ) { fixed ( double * p_winy = winy ) { fixed ( double * p_winz = winz ) { gluProject( objx, objy, objz, modelMatrix, projMatrix, viewport, p_winx, p_winy, p_winz ); } } } } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static int gluUnProject ( double winx, double winy, double winz, double modelMatrix, double projMatrix, int viewport, double[] objx, double[] objy, double[] objz ) { fixed ( double * p_objx = objx ) { fixed ( double * p_objy = objy ) { fixed ( double * p_objz = objz ) { gluUnProject( winx, winy, winz, modelMatrix, projMatrix, viewport, p_objx, p_objy, p_objz ); } } } } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static int gluScaleImage ( uint format, int widthin, int heightin, uint typein, IntPtr datain, int widthout, int heightout, uint typeout, IntPtr dataout ) { gluScaleImage( format, widthin, heightin, typein, datain, widthout, heightout, typeout, dataout ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static int gluBuild1DMipmaps ( uint target, int components, int width, uint format, uint type, IntPtr data ) { gluBuild1DMipmaps( target, components, width, format, type, data ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static int gluBuild2DMipmaps ( uint target, int components, int width, int height, uint format, uint type, IntPtr data ) { gluBuild2DMipmaps( target, components, width, height, format, type, data ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static void[] gluNewQuadric ( ) { gluNewQuadric( ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** public unsafe static void gluDeleteQuadric ( IntPtr state ) { gluDeleteQuadric( state ); } public unsafe static void gluQuadricNormals ( IntPtr quadObject, uint normals ) { gluQuadricNormals( quadObject, normals ); } public unsafe static void gluQuadricTexture ( IntPtr quadObject, byte textureCoords ) { gluQuadricTexture( quadObject, textureCoords ); } public unsafe static void gluQuadricOrientation ( IntPtr quadObject, uint orientation ) { gluQuadricOrientation( quadObject, orientation ); } public unsafe static void gluQuadricDrawStyle ( IntPtr quadObject, uint drawStyle ) { gluQuadricDrawStyle( quadObject, drawStyle ); } public unsafe static void gluCylinder ( IntPtr qobj, double baseRadius, double topRadius, double height, int slices, int stacks ) { gluCylinder( qobj, baseRadius, topRadius, height, slices, stacks ); } public unsafe static void gluDisk ( IntPtr qobj, double innerRadius, double outerRadius, int slices, int loops ) { gluDisk( qobj, innerRadius, outerRadius, slices, loops ); } public unsafe static void gluPartialDisk ( IntPtr qobj, double innerRadius, double outerRadius, int slices, int loops, double startAngle, double sweepAngle ) { gluPartialDisk( qobj, innerRadius, outerRadius, slices, loops, startAngle, sweepAngle ); } public unsafe static void gluSphere ( IntPtr qobj, double radius, int slices, int stacks ) { gluSphere( qobj, radius, slices, stacks ); } public unsafe static void gluQuadricCallback ( IntPtr qobj, uint which, IntPtr fn ) { gluQuadricCallback( qobj, which, fn ); } // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static void[] gluNewTess ( ) { gluNewTess( ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** public unsafe static void gluDeleteTess ( IntPtr tess ) { gluDeleteTess( tess ); } public unsafe static void gluTessBeginPolygon ( IntPtr tess, IntPtr polygon_data ) { gluTessBeginPolygon( tess, polygon_data ); } public unsafe static void gluTessBeginContour ( IntPtr tess ) { gluTessBeginContour( tess ); } public unsafe static void gluTessVertex ( IntPtr tess, double coords, IntPtr data ) { gluTessVertex( tess, coords, data ); } public unsafe static void gluTessEndContour ( IntPtr tess ) { gluTessEndContour( tess ); } public unsafe static void gluTessEndPolygon ( IntPtr tess ) { gluTessEndPolygon( tess ); } public unsafe static void gluTessProperty ( IntPtr tess, uint which, double valuex ) { gluTessProperty( tess, which, valuex ); } public unsafe static void gluTessNormal ( IntPtr tess, double x, double y, double z ) { gluTessNormal( tess, x, y, z ); } public unsafe static void gluTessCallback ( IntPtr tess, uint which, IntPtr fn ) { gluTessCallback( tess, which, fn ); } public unsafe static void gluGetTessProperty ( IntPtr tess, uint which, double[] valuex ) { fixed ( double * p_valuex = valuex ) { gluGetTessProperty( (void *)tess, which, p_valuex ); } } // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** /* public unsafe static void[] gluNewNurbsRenderer ( ) { gluNewNurbsRenderer( ); } */ // ************************* FIX ME *********************** // ************************* FIX ME *********************** // ************************* FIX ME *********************** public unsafe static void gluDeleteNurbsRenderer ( IntPtr nobj ) { gluDeleteNurbsRenderer( nobj ); } public unsafe static void gluBeginSurface ( IntPtr nobj ) { gluBeginSurface( nobj ); } public unsafe static void gluBeginCurve ( IntPtr nobj ) { gluBeginCurve( nobj ); } public unsafe static void gluEndCurve ( IntPtr nobj ) { gluEndCurve( nobj ); } public unsafe static void gluEndSurface ( IntPtr nobj ) { gluEndSurface( nobj ); } public unsafe static void gluBeginTrim ( IntPtr nobj ) { gluBeginTrim( nobj ); } public unsafe static void gluEndTrim ( IntPtr nobj ) { gluEndTrim( nobj ); } public unsafe static void gluPwlCurve ( IntPtr nobj, int count, float[] array, int stride, uint type ) { fixed ( float * p_array = array ) { gluPwlCurve( (void *)nobj, count, p_array, stride, type ); } } public unsafe static void gluNurbsCurve ( IntPtr nobj, int nknots, float[] knot, int stride, float[] ctlarray, int order, uint type ) { fixed ( float * p_knot = knot ) { fixed ( float * p_ctlarray = ctlarray ) { gluNurbsCurve( (void *)nobj, nknots, p_knot, stride, p_ctlarray, order, type ); } } } public unsafe static void gluNurbsSurface ( IntPtr nobj, int sknot_count, float[] sknot, int tknot_count, float[] tknot, int s_stride, int t_stride, float[] ctlarray, int sorder, int torder, uint type ) { fixed ( float * p_sknot = sknot ) { fixed ( float * p_tknot = tknot ) { fixed ( float * p_ctlarray = ctlarray ) { gluNurbsSurface( (void *)nobj, sknot_count, p_sknot, tknot_count, p_tknot, s_stride, t_stride, p_ctlarray, sorder, torder, type ); } } } } public unsafe static void gluLoadSamplingMatrices ( IntPtr nobj, float modelMatrix, float projMatrix, int viewport ) { gluLoadSamplingMatrices( (void *)nobj, modelMatrix, projMatrix, viewport ); } public unsafe static void gluNurbsProperty ( IntPtr nobj, uint property, float valuex ) { gluNurbsProperty( (void *)nobj, property, valuex ); } public unsafe static void gluGetNurbsProperty ( IntPtr nobj, uint property, float[] valuex ) { fixed ( float * p_valuex = valuex ) { gluGetNurbsProperty( (void *)nobj, property, p_valuex ); } } public unsafe static void gluNurbsCallback ( IntPtr nobj, uint which, IntPtr fn ) { gluNurbsCallback( (void *)nobj, which, fn ); } public unsafe static void gluBeginPolygon ( IntPtr tess ) { gluBeginPolygon( (void *)tess ); } public unsafe static void gluNextContour ( IntPtr tess, uint type ) { gluNextContour( (void *)tess, type ); } public unsafe static void gluEndPolygon ( IntPtr tess ) { gluEndPolygon( (void *)tess ); } // // // ############################################################################ // ############################################################################ // ############################################################################ // ############################################################################ // // } // public class GLU } // namespace OpenGL // // // ############################################################################ // ############################################################################ // ############################################################################ // ############################################################################