/binding/opengl/glu.d

http://github.com/wilkie/djehuty · D · 339 lines · 193 code · 101 blank · 45 comment · 0 complexity · 38ce4ef1124d2ef0cdb5d590122e32fe MD5 · raw file

  1. /*
  2. * glu.d
  3. *
  4. * This module contains bindings for opengl and was adapted from GLU.h
  5. *
  6. * Author: Dave Wilkinson
  7. *
  8. */
  9. module binding.opengl.glu;
  10. import binding.opengl.gl;
  11. // The functions supported by opengl
  12. extern (System) {
  13. extern(C) struct GLUnurbs;
  14. extern(C) struct GLUquadric;
  15. extern(C) struct GLUtesselator;
  16. /**** Backwards compatibility for old tesselator ****/
  17. void gluBeginPolygon(GLUtesselator *tess);
  18. void gluNextContour(GLUtesselator *tess, GLenum type);
  19. void gluEndPolygon(GLUtesselator *tess);
  20. GLubyte * gluErrorString(GLenum errCode);
  21. //wchar_t* gluErrorUnicodeStringEXT (
  22. // GLenum errCode);
  23. GLubyte * gluGetString(GLenum name);
  24. void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
  25. void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
  26. void gluPickMatrix(GLdouble x, GLdouble y, GLdouble width, GLdouble height, GLint *viewport);
  27. void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
  28. int gluProject(GLdouble objx, GLdouble objy, GLdouble objz, GLdouble *modelMatrix, GLdouble *projMatrix, GLint *viewport, GLdouble *winx, GLdouble *winy, GLdouble *winz);
  29. int gluUnProject(GLdouble winx, GLdouble winy, GLdouble winz, GLdouble *modelMatrix, GLdouble *projMatrix, GLint *viewport, GLdouble *objx, GLdouble *objy, GLdouble *objz);
  30. int gluScaleImage(GLenum format, GLint widthin, GLint heightin, GLenum typein, void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout);
  31. int gluBuild1DMipmaps(GLenum target, GLint components, GLint width, GLenum format, GLenum type, void *data);
  32. int gluBuild2DMipmaps(GLenum target, GLint components, GLint width, GLint height, GLenum format, GLenum type, void *data);
  33. }
  34. extern (System):
  35. /* backwards compatibility: */
  36. /* backwards compatibility: */
  37. alias GLUnurbs GLUnurbsObj;
  38. alias GLUquadric GLUquadricObj;
  39. alias GLUtesselator GLUtesselatorObj;
  40. alias GLUtesselator GLUtriangulatorObj;
  41. GLUquadric * gluNewQuadric();
  42. void gluDeleteQuadric(GLUquadric *state);
  43. void gluQuadricNormals(GLUquadric *quadObject, GLenum normals);
  44. void gluQuadricTexture(GLUquadric *quadObject, GLboolean textureCoords);
  45. void gluQuadricOrientation(GLUquadric *quadObject, GLenum orientation);
  46. void gluQuadricDrawStyle(GLUquadric *quadObject, GLenum drawStyle);
  47. void gluCylinder(GLUquadric *qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks);
  48. void gluDisk(GLUquadric *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops);
  49. void gluPartialDisk(GLUquadric *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);
  50. void gluSphere(GLUquadric *qobj, GLdouble radius, GLint slices, GLint stacks);
  51. void gluQuadricCallback(GLUquadric *qobj, GLenum which, void function()fn);
  52. GLUtesselator * gluNewTess();
  53. void gluDeleteTess(GLUtesselator *tess);
  54. void gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
  55. void gluTessBeginContour(GLUtesselator *tess);
  56. void gluTessVertex(GLUtesselator *tess, GLdouble *coords, void *data);
  57. void gluTessEndContour(GLUtesselator *tess);
  58. void gluTessEndPolygon(GLUtesselator *tess);
  59. void gluTessProperty(GLUtesselator *tess, GLenum which, GLdouble value);
  60. void gluTessNormal(GLUtesselator *tess, GLdouble x, GLdouble y, GLdouble z);
  61. void gluTessCallback(GLUtesselator *tess, GLenum which, void function()fn);
  62. void gluGetTessProperty(GLUtesselator *tess, GLenum which, GLdouble *value);
  63. GLUnurbs * gluNewNurbsRenderer();
  64. void gluDeleteNurbsRenderer(GLUnurbs *nobj);
  65. void gluBeginSurface(GLUnurbs *nobj);
  66. void gluBeginCurve(GLUnurbs *nobj);
  67. void gluEndCurve(GLUnurbs *nobj);
  68. void gluEndSurface(GLUnurbs *nobj);
  69. void gluBeginTrim(GLUnurbs *nobj);
  70. void gluEndTrim(GLUnurbs *nobj);
  71. void gluPwlCurve(GLUnurbs *nobj, GLint count, GLfloat *array, GLint stride, GLenum type);
  72. void gluNurbsCurve(GLUnurbs *nobj, GLint nknots, GLfloat *knot, GLint stride, GLfloat *ctlarray, GLint order, GLenum type);
  73. void gluNurbsSurface(GLUnurbs *nobj, GLint sknot_count, float *sknot, GLint tknot_count, GLfloat *tknot, GLint s_stride, GLint t_stride, GLfloat *ctlarray, GLint sorder, GLint torder, GLenum type);
  74. void gluLoadSamplingMatrices(GLUnurbs *nobj, GLfloat *modelMatrix, GLfloat *projMatrix, GLint *viewport);
  75. void gluNurbsProperty(GLUnurbs *nobj, GLenum property, GLfloat value);
  76. void gluGetNurbsProperty(GLUnurbs *nobj, GLenum property, GLfloat *value);
  77. void gluNurbsCallback(GLUnurbs *nobj, GLenum which, void function()fn);
  78. /**** Callback function prototypes ****/
  79. /* gluQuadricCallback */
  80. alias void function(GLenum )GLUquadricErrorProc;
  81. /* gluTessCallback */
  82. alias void function(GLenum )GLUtessBeginProc;
  83. alias void function(GLboolean )GLUtessEdgeFlagProc;
  84. alias void function(void *)GLUtessVertexProc;
  85. alias void function()GLUtessEndProc;
  86. alias void function(GLenum )GLUtessErrorProc;
  87. alias void function(GLdouble *, void **, GLfloat *, void **)GLUtessCombineProc;
  88. alias void function(GLenum , void *)GLUtessBeginDataProc;
  89. alias void function(GLboolean , void *)GLUtessEdgeFlagDataProc;
  90. alias void function(void *, void *)GLUtessVertexDataProc;
  91. alias void function(void *)GLUtessEndDataProc;
  92. alias void function(GLenum , void *)GLUtessErrorDataProc;
  93. alias void function(GLdouble *, void **, GLfloat *, void **, void *)GLUtessCombineDataProc;
  94. /* gluNurbsCallback */
  95. alias void function(GLenum )GLUnurbsErrorProc;
  96. /**** Generic ants ****/
  97. /* Version */
  98. const GLU_VERSION_1_1 = 1;
  99. const GLU_VERSION_1_2 = 1;
  100. /* Errors: (return value 0 = no error) */
  101. const GLU_INVALID_ENUM = 100900;
  102. const GLU_INVALID_VALUE = 100901;
  103. const GLU_OUT_OF_MEMORY = 100902;
  104. const GLU_INCOMPATIBLE_GL_VERSION = 100903;
  105. /* StringName */
  106. const GLU_VERSION = 100800;
  107. const GLU_EXTENSIONS = 100801;
  108. /* Boolean */
  109. alias GL_TRUE GLU_TRUE;
  110. alias GL_FALSE GLU_FALSE;
  111. /**** Quadric ants ****/
  112. /* QuadricNormal */
  113. const GLU_SMOOTH = 100000;
  114. const GLU_FLAT = 100001;
  115. const GLU_NONE = 100002;
  116. /* QuadricDrawStyle */
  117. const GLU_POINT = 100010;
  118. const GLU_LINE = 100011;
  119. const GLU_FILL = 100012;
  120. const GLU_SILHOUETTE = 100013;
  121. /* QuadricOrientation */
  122. const GLU_OUTSIDE = 100020;
  123. const GLU_INSIDE = 100021;
  124. /* Callback types: */
  125. /* GLU_ERROR 100103 */
  126. /**** Tesselation ants ****/
  127. const GLU_TESS_MAX_COORD = 1.0e150;
  128. /* TessProperty */
  129. const GLU_TESS_WINDING_RULE = 100140;
  130. const GLU_TESS_BOUNDARY_ONLY = 100141;
  131. const GLU_TESS_TOLERANCE = 100142;
  132. /* TessWinding */
  133. const GLU_TESS_WINDING_ODD = 100130;
  134. const GLU_TESS_WINDING_NONZERO = 100131;
  135. const GLU_TESS_WINDING_POSITIVE = 100132;
  136. const GLU_TESS_WINDING_NEGATIVE = 100133;
  137. const GLU_TESS_WINDING_ABS_GEQ_TWO = 100134;
  138. /* TessCallback */
  139. const GLU_TESS_BEGIN = 100100;
  140. const GLU_TESS_VERTEX = 100101;
  141. const GLU_TESS_END = 100102;
  142. const GLU_TESS_ERROR = 100103;
  143. const GLU_TESS_EDGE_FLAG = 100104;
  144. const GLU_TESS_COMBINE = 100105;
  145. const GLU_TESS_BEGIN_DATA = 100106;
  146. const GLU_TESS_VERTEX_DATA = 100107;
  147. const GLU_TESS_END_DATA = 100108;
  148. const GLU_TESS_ERROR_DATA = 100109;
  149. const GLU_TESS_EDGE_FLAG_DATA = 100110;
  150. const GLU_TESS_COMBINE_DATA = 100111;
  151. /* TessError */
  152. const GLU_TESS_ERROR1 = 100151;
  153. const GLU_TESS_ERROR2 = 100152;
  154. const GLU_TESS_ERROR3 = 100153;
  155. const GLU_TESS_ERROR4 = 100154;
  156. const GLU_TESS_ERROR5 = 100155;
  157. const GLU_TESS_ERROR6 = 100156;
  158. const GLU_TESS_ERROR7 = 100157;
  159. const GLU_TESS_ERROR8 = 100158;
  160. alias GLU_TESS_ERROR1 GLU_TESS_MISSING_BEGIN_POLYGON;
  161. alias GLU_TESS_ERROR2 GLU_TESS_MISSING_BEGIN_CONTOUR;
  162. alias GLU_TESS_ERROR3 GLU_TESS_MISSING_END_POLYGON;
  163. alias GLU_TESS_ERROR4 GLU_TESS_MISSING_END_CONTOUR;
  164. alias GLU_TESS_ERROR5 GLU_TESS_COORD_TOO_LARGE;
  165. alias GLU_TESS_ERROR6 GLU_TESS_NEED_COMBINE_;
  166. /**** NURBS ants ****/
  167. /* NurbsProperty */
  168. const GLU_AUTO_LOAD_MATRIX = 100200;
  169. const GLU_CULLING = 100201;
  170. const GLU_SAMPLING_TOLERANCE = 100203;
  171. const GLU_DISPLAY_MODE = 100204;
  172. const GLU_PARAMETRIC_TOLERANCE = 100202;
  173. const GLU_SAMPLING_METHOD = 100205;
  174. const GLU_U_STEP = 100206;
  175. const GLU_V_STEP = 100207;
  176. /* NurbsSampling */
  177. const GLU_PATH_LENGTH = 100215;
  178. const GLU_PARAMETRIC_ERROR = 100216;
  179. const GLU_DOMAIN_DISTANCE = 100217;
  180. /* NurbsTrim */
  181. const GLU_MAP1_TRIM_2 = 100210;
  182. const GLU_MAP1_TRIM_3 = 100211;
  183. /* NurbsDisplay */
  184. /* GLU_FILL 100012 */
  185. const GLU_OUTLINE_POLYGON = 100240;
  186. const GLU_OUTLINE_PATCH = 100241;
  187. /* NurbsCallback */
  188. /* GLU_ERROR 100103 */
  189. /* NurbsErrors */
  190. const GLU_NURBS_ERROR1 = 100251;
  191. const GLU_NURBS_ERROR2 = 100252;
  192. const GLU_NURBS_ERROR3 = 100253;
  193. const GLU_NURBS_ERROR4 = 100254;
  194. const GLU_NURBS_ERROR5 = 100255;
  195. const GLU_NURBS_ERROR6 = 100256;
  196. const GLU_NURBS_ERROR7 = 100257;
  197. const GLU_NURBS_ERROR8 = 100258;
  198. const GLU_NURBS_ERROR9 = 100259;
  199. const GLU_NURBS_ERROR10 = 100260;
  200. const GLU_NURBS_ERROR11 = 100261;
  201. const GLU_NURBS_ERROR12 = 100262;
  202. const GLU_NURBS_ERROR13 = 100263;
  203. const GLU_NURBS_ERROR14 = 100264;
  204. const GLU_NURBS_ERROR15 = 100265;
  205. const GLU_NURBS_ERROR16 = 100266;
  206. const GLU_NURBS_ERROR17 = 100267;
  207. const GLU_NURBS_ERROR18 = 100268;
  208. const GLU_NURBS_ERROR19 = 100269;
  209. const GLU_NURBS_ERROR20 = 100270;
  210. const GLU_NURBS_ERROR21 = 100271;
  211. const GLU_NURBS_ERROR22 = 100272;
  212. const GLU_NURBS_ERROR23 = 100273;
  213. const GLU_NURBS_ERROR24 = 100274;
  214. const GLU_NURBS_ERROR25 = 100275;
  215. const GLU_NURBS_ERROR26 = 100276;
  216. const GLU_NURBS_ERROR27 = 100277;
  217. const GLU_NURBS_ERROR28 = 100278;
  218. const GLU_NURBS_ERROR29 = 100279;
  219. const GLU_NURBS_ERROR30 = 100280;
  220. const GLU_NURBS_ERROR31 = 100281;
  221. const GLU_NURBS_ERROR32 = 100282;
  222. const GLU_NURBS_ERROR33 = 100283;
  223. const GLU_NURBS_ERROR34 = 100284;
  224. const GLU_NURBS_ERROR35 = 100285;
  225. const GLU_NURBS_ERROR36 = 100286;
  226. const GLU_NURBS_ERROR37 = 100287;
  227. /* Contours types -- obsolete! */
  228. const GLU_CW = 100120;
  229. const GLU_CCW = 100121;
  230. const GLU_INTERIOR = 100122;
  231. const GLU_EXTERIOR = 100123;
  232. const GLU_UNKNOWN = 100124;
  233. /* Names without "TESS_" prefix */
  234. alias GLU_TESS_BEGIN GLU_BEGIN;
  235. alias GLU_TESS_VERTEX GLU_VERTEX;
  236. alias GLU_TESS_END GLU_END;
  237. alias GLU_TESS_ERROR GLU_ERROR;
  238. alias GLU_TESS_EDGE_FLAG GLU_EDGE_FLAG;