Compare commits

..

No commits in common. "master" and "renamefest" have entirely different histories.

7 changed files with 8582 additions and 8500 deletions

View file

@ -1,8 +0,0 @@
# opengl
An OpenGL interface
# Extension loading
``loadExtensions()`` must be executed after the creation of a rendering context and before any OpenGL extension procs are used.
# Automatic error checking
The OpenGL procs do perform automatic error checking by default. This can be disabled at compile-time by defining the conditional symbol ``noAutoGLerrorCheck`` (-d:noAutoGLerrorCheck), in which case the error checking code will be omitted from the binary; or at run-time by executing this statement: ``enableAutoGLerrorCheck(false)``.

View file

@ -7,23 +7,20 @@ import glu
proc display() {.cdecl.} = proc display() {.cdecl.} =
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) # Clear color and depth buffers glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) # Clear color and depth buffers
glMatrixMode(GL_MODELVIEW) # To operate on model-view matrix glMatrixMode(GL_MODELVIEW) # To operate on model-view matrix
# Render a color-cube consisting of 6 quads with different colors
glLoadIdentity() # Reset the model-view matrix glLoadIdentity() # Reset the model-view matrix
glTranslatef(1.5, 0.0, -7.0) # Move right and into the screen glTranslatef(1.5, 0.0, -7.0) # Move right and into the screen
# Render a cube consisting of 6 quads
# Each quad consists of 2 triangles
# Each triangle consists of 3 vertices
glBegin(GL_TRIANGLES) # Begin drawing of triangles
glBegin(GL_QUADS) # Begin drawing the color cube with 6 quads
# Top face (y = 1.0f) # Top face (y = 1.0f)
# Define vertices in counter-clockwise (CCW) order with normal pointing out
glColor3f(0.0, 1.0, 0.0) # Green glColor3f(0.0, 1.0, 0.0) # Green
glVertex3f( 1.0, 1.0, -1.0) glVertex3f( 1.0, 1.0, -1.0)
glVertex3f(-1.0, 1.0, -1.0) glVertex3f(-1.0, 1.0, -1.0)
glVertex3f(-1.0, 1.0, 1.0) glVertex3f(-1.0, 1.0, 1.0)
glVertex3f( 1.0, 1.0, 1.0) glVertex3f( 1.0, 1.0, 1.0)
glVertex3f( 1.0, 1.0, -1.0)
glVertex3f(-1.0, 1.0, 1.0)
# Bottom face (y = -1.0f) # Bottom face (y = -1.0f)
glColor3f(1.0, 0.5, 0.0) # Orange glColor3f(1.0, 0.5, 0.0) # Orange
@ -31,8 +28,6 @@ proc display() {.cdecl.} =
glVertex3f(-1.0, -1.0, 1.0) glVertex3f(-1.0, -1.0, 1.0)
glVertex3f(-1.0, -1.0, -1.0) glVertex3f(-1.0, -1.0, -1.0)
glVertex3f( 1.0, -1.0, -1.0) glVertex3f( 1.0, -1.0, -1.0)
glVertex3f( 1.0, -1.0, 1.0)
glVertex3f(-1.0, -1.0, -1.0)
# Front face (z = 1.0f) # Front face (z = 1.0f)
glColor3f(1.0, 0.0, 0.0) # Red glColor3f(1.0, 0.0, 0.0) # Red
@ -40,8 +35,6 @@ proc display() {.cdecl.} =
glVertex3f(-1.0, 1.0, 1.0) glVertex3f(-1.0, 1.0, 1.0)
glVertex3f(-1.0, -1.0, 1.0) glVertex3f(-1.0, -1.0, 1.0)
glVertex3f( 1.0, -1.0, 1.0) glVertex3f( 1.0, -1.0, 1.0)
glVertex3f( 1.0, 1.0, 1.0)
glVertex3f(-1.0, -1.0, 1.0)
# Back face (z = -1.0f) # Back face (z = -1.0f)
glColor3f(1.0, 1.0, 0.0) # Yellow glColor3f(1.0, 1.0, 0.0) # Yellow
@ -49,8 +42,6 @@ proc display() {.cdecl.} =
glVertex3f(-1.0, -1.0, -1.0) glVertex3f(-1.0, -1.0, -1.0)
glVertex3f(-1.0, 1.0, -1.0) glVertex3f(-1.0, 1.0, -1.0)
glVertex3f( 1.0, 1.0, -1.0) glVertex3f( 1.0, 1.0, -1.0)
glVertex3f( 1.0, -1.0, -1.0)
glVertex3f(-1.0, 1.0, -1.0)
# Left face (x = -1.0f) # Left face (x = -1.0f)
glColor3f(0.0, 0.0, 1.0) # Blue glColor3f(0.0, 0.0, 1.0) # Blue
@ -58,8 +49,6 @@ proc display() {.cdecl.} =
glVertex3f(-1.0, 1.0, -1.0) glVertex3f(-1.0, 1.0, -1.0)
glVertex3f(-1.0, -1.0, -1.0) glVertex3f(-1.0, -1.0, -1.0)
glVertex3f(-1.0, -1.0, 1.0) glVertex3f(-1.0, -1.0, 1.0)
glVertex3f(-1.0, 1.0, 1.0)
glVertex3f(-1.0, -1.0, -1.0)
# Right face (x = 1.0f) # Right face (x = 1.0f)
glColor3f(1.0, 0.0, 1.0) # Magenta glColor3f(1.0, 0.0, 1.0) # Magenta
@ -67,13 +56,11 @@ proc display() {.cdecl.} =
glVertex3f(1.0, 1.0, 1.0) glVertex3f(1.0, 1.0, 1.0)
glVertex3f(1.0, -1.0, 1.0) glVertex3f(1.0, -1.0, 1.0)
glVertex3f(1.0, -1.0, -1.0) glVertex3f(1.0, -1.0, -1.0)
glVertex3f(1.0, 1.0, -1.0)
glVertex3f(1.0, -1.0, 1.0)
glEnd() # End of drawing glEnd() # End of drawing
glutSwapBuffers() # Swap the front and back frame buffers (double buffering) glutSwapBuffers() # Swap the front and back frame buffers (double buffering)
proc reshape(width: GLsizei, height: GLsizei) {.cdecl.} = proc reshape(width: GLsizei, height: GLsizei) {.cdecl.} =
# Compute aspect ratio of the new window # Compute aspect ratio of the new window
if height == 0: if height == 0:
@ -87,16 +74,16 @@ proc reshape(width: GLsizei, height: GLsizei) {.cdecl.} =
glLoadIdentity() # Reset glLoadIdentity() # Reset
# Enable perspective projection with fovy, aspect, zNear and zFar # Enable perspective projection with fovy, aspect, zNear and zFar
gluPerspective(45.0, width / height, 0.1, 100.0) gluPerspective(45.0, width / height, 0.1, 100.0)
loadExtensions() loadExtensions()
glutInit() glutInit()
glutInitDisplayMode(GLUT_DOUBLE) glutInitDisplayMode(GLUT_DOUBLE)
glutInitWindowSize(640, 480) glutInitWindowSize(640, 480)
glutInitWindowPosition(50, 50) glutInitWindowPosition(50, 50)
discard glutCreateWindow("OpenGL Example") discard glutCreateWindow("OpenGL Example")
glutDisplayFunc(display) glutDisplayFunc(display)
glutReshapeFunc(reshape) glutReshapeFunc(reshape)
glClearColor(0.0, 0.0, 0.0, 1.0) # Set background color to black and opaque glClearColor(0.0, 0.0, 0.0, 1.0) # Set background color to black and opaque
glClearDepth(1.0) # Set background depth to farthest glClearDepth(1.0) # Set background depth to farthest
@ -104,5 +91,5 @@ glEnable(GL_DEPTH_TEST) # Enable depth testing for z-c
glDepthFunc(GL_LEQUAL) # Set the type of depth-test glDepthFunc(GL_LEQUAL) # Set the type of depth-test
glShadeModel(GL_SMOOTH) # Enable smooth shading glShadeModel(GL_SMOOTH) # Enable smooth shading
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST) # Nice perspective corrections glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST) # Nice perspective corrections
glutMainLoop() glutMainLoop()

View file

@ -1 +0,0 @@
--path:"../src"

View file

@ -28,12 +28,12 @@ else:
dllname = "libGLU.so.1" dllname = "libGLU.so.1"
type type
ViewPortArray* = array[0..3, GLint] TViewPortArray* = array[0..3, TGLint]
c16dArray* = array[0..15, GLdouble] T16dArray* = array[0..15, TGLdouble]
CallBack* = proc () TCallBack* = proc ()
c3dArray* = array[0..2, GLdouble] T3dArray* = array[0..2, TGLdouble]
c4pArray* = array[0..3, pointer] T4pArray* = array[0..3, pointer]
c4fArray* = array[0..3, GLfloat] T4fArray* = array[0..3, TGLfloat]
type type
GLUnurbs*{.final.} = object GLUnurbs*{.final.} = object
@ -50,255 +50,286 @@ type
PGLUtesselatorObj* = PGLUtesselator PGLUtesselatorObj* = PGLUtesselator
GLUtriangulatorObj* = GLUtesselator GLUtriangulatorObj* = GLUtesselator
PGLUtriangulatorObj* = PGLUtesselator PGLUtriangulatorObj* = PGLUtesselator
TGLUnurbs* = GLUnurbs
TGLUquadric* = GLUquadric
TGLUtesselator* = GLUtesselator
TGLUnurbsObj* = GLUnurbsObj
TGLUquadricObj* = GLUquadricObj
TGLUtesselatorObj* = GLUtesselatorObj
TGLUtriangulatorObj* = GLUtriangulatorObj
{.deprecated: [TGLUnurbs: GLUnurbs, proc gluErrorString*(errCode: TGLenum): cstring{.dynlib: dllname,
TGLUquadric: GLUquadric, importc: "gluErrorString".}
TGLUtesselator: GLUtesselator,
TGLUnurbsObj: GLUnurbsObj,
TGLUquadricObj: GLUquadricObj,
TGLUtesselatorObj: GLUtesselatorObj,
TGLUtriangulatorObj: GLUtriangulatorObj,
TViewPortArray: ViewPortArray,
T16dArray: c16dArray,
TCallback: Callback,
T3dArray: c3dArray,
T4pArray: c4pArray,
T4fArray: c4fArray].}
{.push dynlib: dllname, importc: "glu$1".}
proc ErrorString*(errCode: GLenum): cstring
when defined(Windows): when defined(Windows):
proc ErrorUnicodeStringEXT*(errCode: GLenum): ptr int16 proc gluErrorUnicodeStringEXT*(errCode: TGLenum): ptr int16{.dynlib: dllname,
proc GetString*(name: GLenum): cstring importc: "gluErrorUnicodeStringEXT".}
proc Ortho2D*(left, right, bottom, top: GLdouble) proc gluGetString*(name: TGLenum): cstring{.dynlib: dllname,
proc Perspective*(fovy, aspect, zNear, zFar: GLdouble) importc: "gluGetString".}
proc PickMatrix*(x, y, width, height: GLdouble, viewport: var ViewPortArray) proc gluOrtho2D*(left, right, bottom, top: TGLdouble){.dynlib: dllname,
proc LookAt*(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz: GLdouble) importc: "gluOrtho2D".}
proc Project*(objx, objy, objz: GLdouble, proc gluPerspective*(fovy, aspect, zNear, zFar: TGLdouble){.dynlib: dllname,
modelMatrix, projMatrix: var c16dArray, importc: "gluPerspective".}
viewport: var ViewPortArray, winx, winy, winz: ptr GLdouble): int proc gluPickMatrix*(x, y, width, height: TGLdouble, viewport: var TViewPortArray){.
proc UnProject*(winx, winy, winz: GLdouble, dynlib: dllname, importc: "gluPickMatrix".}
modelMatrix, projMatrix: var c16dArray, proc gluLookAt*(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz: TGLdouble){.
viewport: var ViewPortArray, objx, objy, objz: ptr GLdouble): int dynlib: dllname, importc: "gluLookAt".}
proc ScaleImage*(format: GLenum, widthin, heightin: GLint, typein: GLenum, proc gluProject*(objx, objy, objz: TGLdouble,
datain: pointer, widthout, heightout: GLint, modelMatrix, projMatrix: var T16dArray,
typeout: GLenum, dataout: pointer): int viewport: var TViewPortArray, winx, winy, winz: ptr TGLdouble): int{.
proc Build1DMipmaps*(target: GLenum, components, width: GLint, dynlib: dllname, importc: "gluProject".}
format, atype: GLenum, data: pointer): int proc gluUnProject*(winx, winy, winz: TGLdouble,
proc Build2DMipmaps*(target: GLenum, components, width, height: GLint, modelMatrix, projMatrix: var T16dArray,
format, atype: GLenum, data: pointer): int viewport: var TViewPortArray, objx, objy, objz: ptr TGLdouble): int{.
proc NewQuadric*(): PGLUquadric dynlib: dllname, importc: "gluUnProject".}
proc DeleteQuadric*(state: PGLUquadric) proc gluScaleImage*(format: TGLenum, widthin, heightin: TGLint, typein: TGLenum,
proc QuadricNormals*(quadObject: PGLUquadric, normals: GLenum) datain: pointer, widthout, heightout: TGLint,
proc QuadricTexture*(quadObject: PGLUquadric, textureCoords: GLboolean) typeout: TGLenum, dataout: pointer): int{.dynlib: dllname,
proc QuadricOrientation*(quadObject: PGLUquadric, orientation: GLenum) importc: "gluScaleImage".}
proc QuadricDrawStyle*(quadObject: PGLUquadric, drawStyle: GLenum) proc gluBuild1DMipmaps*(target: TGLenum, components, width: TGLint,
proc Cylinder*(qobj: PGLUquadric, baseRadius, topRadius, height: GLdouble, format, atype: TGLenum, data: pointer): int{.
slices, stacks: GLint) dynlib: dllname, importc: "gluBuild1DMipmaps".}
proc Disk*(qobj: PGLUquadric, innerRadius, outerRadius: GLdouble, proc gluBuild2DMipmaps*(target: TGLenum, components, width, height: TGLint,
slices, loops: GLint) format, atype: TGLenum, data: pointer): int{.
proc PartialDisk*(qobj: PGLUquadric, innerRadius, outerRadius: GLdouble, dynlib: dllname, importc: "gluBuild2DMipmaps".}
slices, loops: GLint, startAngle, sweepAngle: GLdouble) proc gluNewQuadric*(): PGLUquadric{.dynlib: dllname, importc: "gluNewQuadric".}
proc Sphere*(qobj: PGLuquadric, radius: GLdouble, slices, stacks: GLint) proc gluDeleteQuadric*(state: PGLUquadric){.dynlib: dllname,
proc QuadricCallback*(qobj: PGLUquadric, which: GLenum, fn: Callback) importc: "gluDeleteQuadric".}
proc NewTess*(): PGLUtesselator proc gluQuadricNormals*(quadObject: PGLUquadric, normals: TGLenum){.
proc DeleteTess*(tess: PGLUtesselator) dynlib: dllname, importc: "gluQuadricNormals".}
proc TessBeginPolygon*(tess: PGLUtesselator, polygon_data: pointer) proc gluQuadricTexture*(quadObject: PGLUquadric, textureCoords: TGLboolean){.
proc TessBeginContour*(tess: PGLUtesselator) dynlib: dllname, importc: "gluQuadricTexture".}
proc TessVertex*(tess: PGLUtesselator, coords: var c3dArray, data: pointer) proc gluQuadricOrientation*(quadObject: PGLUquadric, orientation: TGLenum){.
proc TessEndContour*(tess: PGLUtesselator) dynlib: dllname, importc: "gluQuadricOrientation".}
proc TessEndPolygon*(tess: PGLUtesselator) proc gluQuadricDrawStyle*(quadObject: PGLUquadric, drawStyle: TGLenum){.
proc TessProperty*(tess: PGLUtesselator, which: GLenum, value: GLdouble) dynlib: dllname, importc: "gluQuadricDrawStyle".}
proc TessNormal*(tess: PGLUtesselator, x, y, z: GLdouble) proc gluCylinder*(qobj: PGLUquadric, baseRadius, topRadius, height: TGLdouble,
proc TessCallback*(tess: PGLUtesselator, which: GLenum, fn: Callback) slices, stacks: TGLint){.dynlib: dllname,
proc GetTessProperty*(tess: PGLUtesselator, which: GLenum, value: ptr GLdouble) importc: "gluCylinder".}
proc NewNurbsRenderer*(): PGLUnurbs proc gluDisk*(qobj: PGLUquadric, innerRadius, outerRadius: TGLdouble,
proc DeleteNurbsRenderer*(nobj: PGLUnurbs) slices, loops: TGLint){.dynlib: dllname, importc: "gluDisk".}
proc BeginSurface*(nobj: PGLUnurbs) proc gluPartialDisk*(qobj: PGLUquadric, innerRadius, outerRadius: TGLdouble,
proc BeginCurve*(nobj: PGLUnurbs) slices, loops: TGLint, startAngle, sweepAngle: TGLdouble){.
proc EndCurve*(nobj: PGLUnurbs) dynlib: dllname, importc: "gluPartialDisk".}
proc EndSurface*(nobj: PGLUnurbs) proc gluSphere*(qobj: PGLuquadric, radius: TGLdouble, slices, stacks: TGLint){.
proc BeginTrim*(nobj: PGLUnurbs) dynlib: dllname, importc: "gluSphere".}
proc EndTrim*(nobj: PGLUnurbs) proc gluQuadricCallback*(qobj: PGLUquadric, which: TGLenum, fn: TCallBack){.
proc PwlCurve*(nobj: PGLUnurbs, count: GLint, aarray: ptr GLfloat, dynlib: dllname, importc: "gluQuadricCallback".}
stride: GLint, atype: GLenum) proc gluNewTess*(): PGLUtesselator{.dynlib: dllname, importc: "gluNewTess".}
proc NurbsCurve*(nobj: PGLUnurbs, nknots: GLint, knot: ptr GLfloat, proc gluDeleteTess*(tess: PGLUtesselator){.dynlib: dllname,
stride: GLint, ctlarray: ptr GLfloat, order: GLint, importc: "gluDeleteTess".}
atype: GLenum) proc gluTessBeginPolygon*(tess: PGLUtesselator, polygon_data: pointer){.
proc NurbsSurface*(nobj: PGLUnurbs, sknot_count: GLint, sknot: ptr GLfloat, dynlib: dllname, importc: "gluTessBeginPolygon".}
tknot_count: GLint, tknot: ptr GLfloat, proc gluTessBeginContour*(tess: PGLUtesselator){.dynlib: dllname,
s_stride, t_stride: GLint, ctlarray: ptr GLfloat, importc: "gluTessBeginContour".}
sorder, torder: GLint, atype: GLenum) proc gluTessVertex*(tess: PGLUtesselator, coords: var T3dArray, data: pointer){.
proc LoadSamplingMatrices*(nobj: PGLUnurbs, dynlib: dllname, importc: "gluTessVertex".}
modelMatrix, projMatrix: var c16dArray, proc gluTessEndContour*(tess: PGLUtesselator){.dynlib: dllname,
viewport: var ViewPortArray) importc: "gluTessEndContour".}
proc NurbsProperty*(nobj: PGLUnurbs, aproperty: GLenum, value: GLfloat) proc gluTessEndPolygon*(tess: PGLUtesselator){.dynlib: dllname,
proc GetNurbsProperty*(nobj: PGLUnurbs, aproperty: GLenum, value: ptr GLfloat) importc: "gluTessEndPolygon".}
proc NurbsCallback*(nobj: PGLUnurbs, which: GLenum, fn: Callback) proc gluTessProperty*(tess: PGLUtesselator, which: TGLenum, value: TGLdouble){.
dynlib: dllname, importc: "gluTessProperty".}
proc gluTessNormal*(tess: PGLUtesselator, x, y, z: TGLdouble){.dynlib: dllname,
importc: "gluTessNormal".}
proc gluTessCallback*(tess: PGLUtesselator, which: TGLenum, fn: TCallBack){.
dynlib: dllname, importc: "gluTessCallback".}
proc gluGetTessProperty*(tess: PGLUtesselator, which: TGLenum, value: ptr TGLdouble){.
dynlib: dllname, importc: "gluGetTessProperty".}
proc gluNewNurbsRenderer*(): PGLUnurbs{.dynlib: dllname,
importc: "gluNewNurbsRenderer".}
proc gluDeleteNurbsRenderer*(nobj: PGLUnurbs){.dynlib: dllname,
importc: "gluDeleteNurbsRenderer".}
proc gluBeginSurface*(nobj: PGLUnurbs){.dynlib: dllname,
importc: "gluBeginSurface".}
proc gluBeginCurve*(nobj: PGLUnurbs){.dynlib: dllname, importc: "gluBeginCurve".}
proc gluEndCurve*(nobj: PGLUnurbs){.dynlib: dllname, importc: "gluEndCurve".}
proc gluEndSurface*(nobj: PGLUnurbs){.dynlib: dllname, importc: "gluEndSurface".}
proc gluBeginTrim*(nobj: PGLUnurbs){.dynlib: dllname, importc: "gluBeginTrim".}
proc gluEndTrim*(nobj: PGLUnurbs){.dynlib: dllname, importc: "gluEndTrim".}
proc gluPwlCurve*(nobj: PGLUnurbs, count: TGLint, aarray: ptr TGLfloat,
stride: TGLint, atype: TGLenum){.dynlib: dllname,
importc: "gluPwlCurve".}
proc gluNurbsCurve*(nobj: PGLUnurbs, nknots: TGLint, knot: ptr TGLfloat,
stride: TGLint, ctlarray: ptr TGLfloat, order: TGLint,
atype: TGLenum){.dynlib: dllname, importc: "gluNurbsCurve".}
proc gluNurbsSurface*(nobj: PGLUnurbs, sknot_count: TGLint, sknot: ptr TGLfloat,
tknot_count: TGLint, tknot: ptr TGLfloat,
s_stride, t_stride: TGLint, ctlarray: ptr TGLfloat,
sorder, torder: TGLint, atype: TGLenum){.dynlib: dllname,
importc: "gluNurbsSurface".}
proc gluLoadSamplingMatrices*(nobj: PGLUnurbs,
modelMatrix, projMatrix: var T16dArray,
viewport: var TViewPortArray){.dynlib: dllname,
importc: "gluLoadSamplingMatrices".}
proc gluNurbsProperty*(nobj: PGLUnurbs, aproperty: TGLenum, value: TGLfloat){.
dynlib: dllname, importc: "gluNurbsProperty".}
proc gluGetNurbsProperty*(nobj: PGLUnurbs, aproperty: TGLenum, value: ptr TGLfloat){.
dynlib: dllname, importc: "gluGetNurbsProperty".}
proc gluNurbsCallback*(nobj: PGLUnurbs, which: TGLenum, fn: TCallBack){.
dynlib: dllname, importc: "gluNurbsCallback".}
#*** Callback function prototypes *** #*** Callback function prototypes ***
type # gluQuadricCallback type # gluQuadricCallback
GLUquadricErrorProc* = proc (p: GLenum) # gluTessCallback GLUquadricErrorProc* = proc (p: TGLenum) # gluTessCallback
GLUtessBeginProc* = proc (p: GLenum) GLUtessBeginProc* = proc (p: TGLenum)
GLUtessEdgeFlagProc* = proc (p: GLboolean) GLUtessEdgeFlagProc* = proc (p: TGLboolean)
GLUtessVertexProc* = proc (p: pointer) GLUtessVertexProc* = proc (p: pointer)
GLUtessEndProc* = proc () GLUtessEndProc* = proc ()
GLUtessErrorProc* = proc (p: GLenum) GLUtessErrorProc* = proc (p: TGLenum)
GLUtessCombineProc* = proc (p1: var c3dArray, p2: c4pArray, p3: c4fArray, GLUtessCombineProc* = proc (p1: var T3dArray, p2: T4pArray, p3: T4fArray,
p4: ptr pointer) p4: ptr pointer)
GLUtessBeginDataProc* = proc (p1: GLenum, p2: pointer) GLUtessBeginDataProc* = proc (p1: TGLenum, p2: pointer)
GLUtessEdgeFlagDataProc* = proc (p1: GLboolean, p2: pointer) GLUtessEdgeFlagDataProc* = proc (p1: TGLboolean, p2: pointer)
GLUtessVertexDataProc* = proc (p1, p2: pointer) GLUtessVertexDataProc* = proc (p1, p2: pointer)
GLUtessEndDataProc* = proc (p: pointer) GLUtessEndDataProc* = proc (p: pointer)
GLUtessErrorDataProc* = proc (p1: GLenum, p2: pointer) GLUtessErrorDataProc* = proc (p1: TGLenum, p2: pointer)
GLUtessCombineDataProc* = proc (p1: var c3dArray, p2: var c4pArray, GLUtessCombineDataProc* = proc (p1: var T3dArray, p2: var T4pArray,
p3: var c4fArray, p4: ptr pointer, p5: pointer) # p3: var T4fArray, p4: ptr pointer, p5: pointer) #
GLUnurbsErrorProc* = proc (p: GLenum) #*** Generic constants ****/ GLUnurbsErrorProc* = proc (p: TGLenum) #*** Generic constants ****/
const # Version const # Version
VERSION_1_1* = 1 GLU_VERSION_1_1* = 1
VERSION_1_2* = 1 # Errors: (return value 0 = no error) GLU_VERSION_1_2* = 1 # Errors: (return value 0 = no error)
INVALID_ENUM* = 100900 GLU_INVALID_ENUM* = 100900
INVALID_VALUE* = 100901 GLU_INVALID_VALUE* = 100901
OUT_OF_MEMORY* = 100902 GLU_OUT_OF_MEMORY* = 100902
INCOMPATIBLE_GL_VERSION* = 100903 # StringName GLU_INCOMPATIBLE_GL_VERSION* = 100903 # StringName
VERSION* = 100800 GLU_VERSION* = 100800
EXTENSIONS* = 100801 # Boolean GLU_EXTENSIONS* = 100801 # Boolean
TRUE* = opengl.TRUE GLU_TRUE* = GL_TRUE
FALSE* = opengl.FALSE #*** Quadric constants ****/ GLU_FALSE* = GL_FALSE #*** Quadric constants ****/
# QuadricNormal # QuadricNormal
SMOOTH* = 100000 GLU_SMOOTH* = 100000
FLAT* = 100001 GLU_FLAT* = 100001
NONE* = 100002 # QuadricDrawStyle GLU_NONE* = 100002 # QuadricDrawStyle
POINT* = 100010 GLU_POINT* = 100010
LINE* = 100011 GLU_LINE* = 100011
FILL* = 100012 GLU_FILL* = 100012
SILHOUETTE* = 100013 # QuadricOrientation GLU_SILHOUETTE* = 100013 # QuadricOrientation
OUTSIDE* = 100020 GLU_OUTSIDE* = 100020
INSIDE* = 100021 # Callback types: GLU_INSIDE* = 100021 # Callback types:
# ERROR = 100103; # GLU_ERROR = 100103;
#*** Tesselation constants ****/ #*** Tesselation constants ****/
TESS_MAX_COORD* = 1.00000e+150 # TessProperty GLU_TESS_MAX_COORD* = 1.00000e+150 # TessProperty
TESS_WINDING_RULE* = 100140 GLU_TESS_WINDING_RULE* = 100140
TESS_BOUNDARY_ONLY* = 100141 GLU_TESS_BOUNDARY_ONLY* = 100141
TESS_TOLERANCE* = 100142 # TessWinding GLU_TESS_TOLERANCE* = 100142 # TessWinding
TESS_WINDING_ODD* = 100130 GLU_TESS_WINDING_ODD* = 100130
TESS_WINDING_NONZERO* = 100131 GLU_TESS_WINDING_NONZERO* = 100131
TESS_WINDING_POSITIVE* = 100132 GLU_TESS_WINDING_POSITIVE* = 100132
TESS_WINDING_NEGATIVE* = 100133 GLU_TESS_WINDING_NEGATIVE* = 100133
TESS_WINDING_ABS_GEQ_TWO* = 100134 # TessCallback GLU_TESS_WINDING_ABS_GEQ_TWO* = 100134 # TessCallback
TESS_BEGIN* = 100100 # void (CALLBACK*)(GLenum type) GLU_TESS_BEGIN* = 100100 # void (CALLBACK*)(TGLenum type)
constTESS_VERTEX* = 100101 # void (CALLBACK*)(void *data) constGLU_TESS_VERTEX* = 100101 # void (CALLBACK*)(void *data)
TESS_END* = 100102 # void (CALLBACK*)(void) GLU_TESS_END* = 100102 # void (CALLBACK*)(void)
TESS_ERROR* = 100103 # void (CALLBACK*)(GLenum errno) GLU_TESS_ERROR* = 100103 # void (CALLBACK*)(TGLenum errno)
TESS_EDGE_FLAG* = 100104 # void (CALLBACK*)(GLboolean boundaryEdge) GLU_TESS_EDGE_FLAG* = 100104 # void (CALLBACK*)(TGLboolean boundaryEdge)
TESS_COMBINE* = 100105 # void (CALLBACK*)(GLdouble coords[3], GLU_TESS_COMBINE* = 100105 # void (CALLBACK*)(TGLdouble coords[3],
# void *data[4], # void *data[4],
# GLfloat weight[4], # TGLfloat weight[4],
# void **dataOut) # void **dataOut)
TESS_BEGIN_DATA* = 100106 # void (CALLBACK*)(GLenum type, GLU_TESS_BEGIN_DATA* = 100106 # void (CALLBACK*)(TGLenum type,
# void *polygon_data) # void *polygon_data)
TESS_VERTEX_DATA* = 100107 # void (CALLBACK*)(void *data, GLU_TESS_VERTEX_DATA* = 100107 # void (CALLBACK*)(void *data,
# void *polygon_data) # void *polygon_data)
TESS_END_DATA* = 100108 # void (CALLBACK*)(void *polygon_data) GLU_TESS_END_DATA* = 100108 # void (CALLBACK*)(void *polygon_data)
TESS_ERROR_DATA* = 100109 # void (CALLBACK*)(GLenum errno, GLU_TESS_ERROR_DATA* = 100109 # void (CALLBACK*)(TGLenum errno,
# void *polygon_data) # void *polygon_data)
TESS_EDGE_FLAG_DATA* = 100110 # void (CALLBACK*)(GLboolean boundaryEdge, GLU_TESS_EDGE_FLAG_DATA* = 100110 # void (CALLBACK*)(TGLboolean boundaryEdge,
# void *polygon_data) # void *polygon_data)
TESS_COMBINE_DATA* = 100111 # void (CALLBACK*)(GLdouble coords[3], GLU_TESS_COMBINE_DATA* = 100111 # void (CALLBACK*)(TGLdouble coords[3],
# void *data[4], # void *data[4],
# GLfloat weight[4], # TGLfloat weight[4],
# void **dataOut, # void **dataOut,
# void *polygon_data) # void *polygon_data)
# TessError # TessError
TESS_ERROR1* = 100151 GLU_TESS_ERROR1* = 100151
TESS_ERROR2* = 100152 GLU_TESS_ERROR2* = 100152
TESS_ERROR3* = 100153 GLU_TESS_ERROR3* = 100153
TESS_ERROR4* = 100154 GLU_TESS_ERROR4* = 100154
TESS_ERROR5* = 100155 GLU_TESS_ERROR5* = 100155
TESS_ERROR6* = 100156 GLU_TESS_ERROR6* = 100156
TESS_ERROR7* = 100157 GLU_TESS_ERROR7* = 100157
TESS_ERROR8* = 100158 GLU_TESS_ERROR8* = 100158
TESS_MISSING_BEGIN_POLYGON* = TESS_ERROR1 GLU_TESS_MISSING_BEGIN_POLYGON* = GLU_TESS_ERROR1
TESS_MISSING_BEGIN_CONTOUR* = TESS_ERROR2 GLU_TESS_MISSING_BEGIN_CONTOUR* = GLU_TESS_ERROR2
TESS_MISSING_END_POLYGON* = TESS_ERROR3 GLU_TESS_MISSING_END_POLYGON* = GLU_TESS_ERROR3
TESS_MISSING_END_CONTOUR* = TESS_ERROR4 GLU_TESS_MISSING_END_CONTOUR* = GLU_TESS_ERROR4
TESS_COORD_TOO_LARGE* = TESS_ERROR5 GLU_TESS_COORD_TOO_LARGE* = GLU_TESS_ERROR5
TESS_NEED_COMBINE_CALLBACK* = TESS_ERROR6 #*** NURBS constants ****/ GLU_TESS_NEED_COMBINE_CALLBACK* = GLU_TESS_ERROR6 #*** NURBS constants ****/
# NurbsProperty # NurbsProperty
AUTO_LOAD_MATRIX* = 100200 GLU_AUTO_LOAD_MATRIX* = 100200
CULLING* = 100201 GLU_CULLING* = 100201
SAMPLING_TOLERANCE* = 100203 GLU_SAMPLING_TOLERANCE* = 100203
DISPLAY_MODE* = 100204 GLU_DISPLAY_MODE* = 100204
PARAMETRIC_TOLERANCE* = 100202 GLU_PARAMETRIC_TOLERANCE* = 100202
SAMPLING_METHOD* = 100205 GLU_SAMPLING_METHOD* = 100205
U_STEP* = 100206 GLU_U_STEP* = 100206
V_STEP* = 100207 # NurbsSampling GLU_V_STEP* = 100207 # NurbsSampling
PATH_LENGTH* = 100215 GLU_PATH_LENGTH* = 100215
PARAMETRIC_ERROR* = 100216 GLU_PARAMETRIC_ERROR* = 100216
DOMAIN_DISTANCE* = 100217 # NurbsTrim GLU_DOMAIN_DISTANCE* = 100217 # NurbsTrim
MAP1_TRIM_2* = 100210 GLU_MAP1_TRIM_2* = 100210
MAP1_TRIM_3* = 100211 # NurbsDisplay GLU_MAP1_TRIM_3* = 100211 # NurbsDisplay
# FILL = 100012; # GLU_FILL = 100012;
OUTLINE_POLYGON* = 100240 GLU_OUTLINE_POLYGON* = 100240
OUTLINE_PATCH* = 100241 # NurbsCallback GLU_OUTLINE_PATCH* = 100241 # NurbsCallback
# ERROR = 100103; # GLU_ERROR = 100103;
# NurbsErrors # NurbsErrors
NURBS_ERROR1* = 100251 GLU_NURBS_ERROR1* = 100251
NURBS_ERROR2* = 100252 GLU_NURBS_ERROR2* = 100252
NURBS_ERROR3* = 100253 GLU_NURBS_ERROR3* = 100253
NURBS_ERROR4* = 100254 GLU_NURBS_ERROR4* = 100254
NURBS_ERROR5* = 100255 GLU_NURBS_ERROR5* = 100255
NURBS_ERROR6* = 100256 GLU_NURBS_ERROR6* = 100256
NURBS_ERROR7* = 100257 GLU_NURBS_ERROR7* = 100257
NURBS_ERROR8* = 100258 GLU_NURBS_ERROR8* = 100258
NURBS_ERROR9* = 100259 GLU_NURBS_ERROR9* = 100259
NURBS_ERROR10* = 100260 GLU_NURBS_ERROR10* = 100260
NURBS_ERROR11* = 100261 GLU_NURBS_ERROR11* = 100261
NURBS_ERROR12* = 100262 GLU_NURBS_ERROR12* = 100262
NURBS_ERROR13* = 100263 GLU_NURBS_ERROR13* = 100263
NURBS_ERROR14* = 100264 GLU_NURBS_ERROR14* = 100264
NURBS_ERROR15* = 100265 GLU_NURBS_ERROR15* = 100265
NURBS_ERROR16* = 100266 GLU_NURBS_ERROR16* = 100266
NURBS_ERROR17* = 100267 GLU_NURBS_ERROR17* = 100267
NURBS_ERROR18* = 100268 GLU_NURBS_ERROR18* = 100268
NURBS_ERROR19* = 100269 GLU_NURBS_ERROR19* = 100269
NURBS_ERROR20* = 100270 GLU_NURBS_ERROR20* = 100270
NURBS_ERROR21* = 100271 GLU_NURBS_ERROR21* = 100271
NURBS_ERROR22* = 100272 GLU_NURBS_ERROR22* = 100272
NURBS_ERROR23* = 100273 GLU_NURBS_ERROR23* = 100273
NURBS_ERROR24* = 100274 GLU_NURBS_ERROR24* = 100274
NURBS_ERROR25* = 100275 GLU_NURBS_ERROR25* = 100275
NURBS_ERROR26* = 100276 GLU_NURBS_ERROR26* = 100276
NURBS_ERROR27* = 100277 GLU_NURBS_ERROR27* = 100277
NURBS_ERROR28* = 100278 GLU_NURBS_ERROR28* = 100278
NURBS_ERROR29* = 100279 GLU_NURBS_ERROR29* = 100279
NURBS_ERROR30* = 100280 GLU_NURBS_ERROR30* = 100280
NURBS_ERROR31* = 100281 GLU_NURBS_ERROR31* = 100281
NURBS_ERROR32* = 100282 GLU_NURBS_ERROR32* = 100282
NURBS_ERROR33* = 100283 GLU_NURBS_ERROR33* = 100283
NURBS_ERROR34* = 100284 GLU_NURBS_ERROR34* = 100284
NURBS_ERROR35* = 100285 GLU_NURBS_ERROR35* = 100285
NURBS_ERROR36* = 100286 GLU_NURBS_ERROR36* = 100286
NURBS_ERROR37* = 100287 #*** Backwards compatibility for old tesselator ****/ GLU_NURBS_ERROR37* = 100287 #*** Backwards compatibility for old tesselator ****/
proc BeginPolygon*(tess: PGLUtesselator)
proc NextContour*(tess: PGLUtesselator, atype: GLenum)
proc EndPolygon*(tess: PGLUtesselator)
{.pop.}
proc gluBeginPolygon*(tess: PGLUtesselator){.dynlib: dllname,
importc: "gluBeginPolygon".}
proc gluNextContour*(tess: PGLUtesselator, atype: TGLenum){.dynlib: dllname,
importc: "gluNextContour".}
proc gluEndPolygon*(tess: PGLUtesselator){.dynlib: dllname,
importc: "gluEndPolygon".}
const # Contours types -- obsolete! const # Contours types -- obsolete!
CW* = 100120 GLU_CW* = 100120
CCW* = 100121 GLU_CCW* = 100121
INTERIOR* = 100122 GLU_INTERIOR* = 100122
EXTERIOR* = 100123 GLU_EXTERIOR* = 100123
UNKNOWN* = 100124 # Names without "TESS_" prefix GLU_UNKNOWN* = 100124 # Names without "TESS_" prefix
BEGIN* = TESS_BEGIN GLU_BEGIN* = GLU_TESS_BEGIN
VERTEX* = constTESS_VERTEX GLU_VERTEX* = constGLU_TESS_VERTEX
END* = TESS_END GLU_END* = GLU_TESS_END
ERROR* = TESS_ERROR GLU_ERROR* = GLU_TESS_ERROR
EDGE_FLAG* = TESS_EDGE_FLAG GLU_EDGE_FLAG* = GLU_TESS_EDGE_FLAG
{.pop.} {.pop.}
# implementation # implementation

View file

@ -29,353 +29,413 @@ else:
const const
dllname = "libglut.so.3" dllname = "libglut.so.3"
type type
VoidCallback* = proc (){.cdecl.} TGlutVoidCallback* = proc (){.cdecl.}
OneIntCallback* = proc (value: cint){.cdecl.} TGlut1IntCallback* = proc (value: cint){.cdecl.}
TwoIntCallback* = proc (v1, v2: cint){.cdecl.} TGlut2IntCallback* = proc (v1, v2: cint){.cdecl.}
ThreeIntCallback* = proc (v1, v2, v3: cint){.cdecl.} TGlut3IntCallback* = proc (v1, v2, v3: cint){.cdecl.}
FourIntCallback* = proc (v1, v2, v3, v4: cint){.cdecl.} TGlut4IntCallback* = proc (v1, v2, v3, v4: cint){.cdecl.}
OneCharTwoIntCallback* = proc (c: int8, v1, v2: cint){.cdecl.} TGlut1Char2IntCallback* = proc (c: int8, v1, v2: cint){.cdecl.}
OneUIntThreeIntCallback* = proc (u, v1, v2, v3: cint){.cdecl.} TGlut1UInt3IntCallback* = proc (u, v1, v2, v3: cint){.cdecl.}
{.deprecated: [Pointer: pointer, {.deprecated: [Pointer: pointer].}
TGlutVoidCallback: VoidCallback,
TGlut1IntCallback: OneIntCallback,
TGlut2IntCallback: TwoIntCallback,
TGlut3IntCallback: ThreeIntCallback,
TGlut4IntCallback: FourIntCallback,
TGlut1Char2IntCallback: OneCharTwoIntCallback,
TGlut1UInt3IntCallback: OneUIntThreeIntCallback
].}
const const
API_VERSION* = 3 GLUT_API_VERSION* = 3
XLIB_IMPLEMENTATION* = 12 # Display mode bit masks. GLUT_XLIB_IMPLEMENTATION* = 12 # Display mode bit masks.
RGB* = 0 GLUT_RGB* = 0
RGBA* = RGB GLUT_RGBA* = GLUT_RGB
INDEX* = 1 GLUT_INDEX* = 1
SINGLE* = 0 GLUT_SINGLE* = 0
DOUBLE* = 2 GLUT_DOUBLE* = 2
ACCUM* = 4 GLUT_ACCUM* = 4
ALPHA* = 8 GLUT_ALPHA* = 8
DEPTH* = 16 GLUT_DEPTH* = 16
STENCIL* = 32 GLUT_STENCIL* = 32
MULTISAMPLE* = 128 GLUT_MULTISAMPLE* = 128
STEREO* = 256 GLUT_STEREO* = 256
LUMINANCE* = 512 # Mouse buttons. GLUT_LUMINANCE* = 512 # Mouse buttons.
LEFT_BUTTON* = 0 GLUT_LEFT_BUTTON* = 0
MIDDLE_BUTTON* = 1 GLUT_MIDDLE_BUTTON* = 1
RIGHT_BUTTON* = 2 # Mouse button state. GLUT_RIGHT_BUTTON* = 2 # Mouse button state.
DOWN* = 0 GLUT_DOWN* = 0
UP* = 1 # function keys GLUT_UP* = 1 # function keys
KEY_F1* = 1 GLUT_KEY_F1* = 1
KEY_F2* = 2 GLUT_KEY_F2* = 2
KEY_F3* = 3 GLUT_KEY_F3* = 3
KEY_F4* = 4 GLUT_KEY_F4* = 4
KEY_F5* = 5 GLUT_KEY_F5* = 5
KEY_F6* = 6 GLUT_KEY_F6* = 6
KEY_F7* = 7 GLUT_KEY_F7* = 7
KEY_F8* = 8 GLUT_KEY_F8* = 8
KEY_F9* = 9 GLUT_KEY_F9* = 9
KEY_F10* = 10 GLUT_KEY_F10* = 10
KEY_F11* = 11 GLUT_KEY_F11* = 11
KEY_F12* = 12 # directional keys GLUT_KEY_F12* = 12 # directional keys
KEY_LEFT* = 100 GLUT_KEY_LEFT* = 100
KEY_UP* = 101 GLUT_KEY_UP* = 101
KEY_RIGHT* = 102 GLUT_KEY_RIGHT* = 102
KEY_DOWN* = 103 GLUT_KEY_DOWN* = 103
KEY_PAGE_UP* = 104 GLUT_KEY_PAGE_UP* = 104
KEY_PAGE_DOWN* = 105 GLUT_KEY_PAGE_DOWN* = 105
KEY_HOME* = 106 GLUT_KEY_HOME* = 106
KEY_END* = 107 GLUT_KEY_END* = 107
KEY_INSERT* = 108 # Entry/exit state. GLUT_KEY_INSERT* = 108 # Entry/exit state.
LEFT* = 0 GLUT_LEFT* = 0
ENTERED* = 1 # Menu usage state. GLUT_ENTERED* = 1 # Menu usage state.
MENU_NOT_IN_USE* = 0 GLUT_MENU_NOT_IN_USE* = 0
MENU_IN_USE* = 1 # Visibility state. GLUT_MENU_IN_USE* = 1 # Visibility state.
NOT_VISIBLE* = 0 GLUT_NOT_VISIBLE* = 0
VISIBLE* = 1 # Window status state. GLUT_VISIBLE* = 1 # Window status state.
HIDDEN* = 0 GLUT_HIDDEN* = 0
FULLY_RETAINED* = 1 GLUT_FULLY_RETAINED* = 1
PARTIALLY_RETAINED* = 2 GLUT_PARTIALLY_RETAINED* = 2
FULLY_COVERED* = 3 # Color index component selection values. GLUT_FULLY_COVERED* = 3 # Color index component selection values.
RED* = 0 GLUT_RED* = 0
GREEN* = 1 GLUT_GREEN* = 1
BLUE* = 2 # Layers for use. GLUT_BLUE* = 2 # Layers for use.
NORMAL* = 0 GLUT_NORMAL* = 0
OVERLAY* = 1 GLUT_OVERLAY* = 1
when defined(Windows): when defined(Windows):
const # Stroke font constants (use these in GLUT program). const # Stroke font constants (use these in GLUT program).
STROKE_ROMAN* = cast[pointer](0) GLUT_STROKE_ROMAN* = cast[Pointer](0)
STROKE_MONO_ROMAN* = cast[pointer](1) # Bitmap font constants (use these in GLUT program). GLUT_STROKE_MONO_ROMAN* = cast[Pointer](1) # Bitmap font constants (use these in GLUT program).
BITMAP_9_BY_15* = cast[pointer](2) GLUT_BITMAP_9_BY_15* = cast[Pointer](2)
BITMAP_8_BY_13* = cast[pointer](3) GLUT_BITMAP_8_BY_13* = cast[Pointer](3)
BITMAP_TIMES_ROMAN_10* = cast[pointer](4) GLUT_BITMAP_TIMES_ROMAN_10* = cast[Pointer](4)
BITMAP_TIMES_ROMAN_24* = cast[pointer](5) GLUT_BITMAP_TIMES_ROMAN_24* = cast[Pointer](5)
BITMAP_HELVETICA_10* = cast[pointer](6) GLUT_BITMAP_HELVETICA_10* = cast[Pointer](6)
BITMAP_HELVETICA_12* = cast[pointer](7) GLUT_BITMAP_HELVETICA_12* = cast[Pointer](7)
BITMAP_HELVETICA_18* = cast[pointer](8) GLUT_BITMAP_HELVETICA_18* = cast[Pointer](8)
else: else:
var # Stroke font constants (use these in GLUT program). var # Stroke font constants (use these in GLUT program).
STROKE_ROMAN*: pointer GLUT_STROKE_ROMAN*: Pointer
STROKE_MONO_ROMAN*: pointer # Bitmap font constants (use these in GLUT program). GLUT_STROKE_MONO_ROMAN*: Pointer # Bitmap font constants (use these in GLUT program).
BITMAP_9_BY_15*: pointer GLUT_BITMAP_9_BY_15*: Pointer
BITMAP_8_BY_13*: pointer GLUT_BITMAP_8_BY_13*: Pointer
BITMAP_TIMES_ROMAN_10*: pointer GLUT_BITMAP_TIMES_ROMAN_10*: Pointer
BITMAP_TIMES_ROMAN_24*: pointer GLUT_BITMAP_TIMES_ROMAN_24*: Pointer
BITMAP_HELVETICA_10*: pointer GLUT_BITMAP_HELVETICA_10*: Pointer
BITMAP_HELVETICA_12*: pointer GLUT_BITMAP_HELVETICA_12*: Pointer
BITMAP_HELVETICA_18*: pointer GLUT_BITMAP_HELVETICA_18*: Pointer
const # glutGet parameters. const # glutGet parameters.
WINDOW_X* = 100 GLUT_WINDOW_X* = 100
WINDOW_Y* = 101 GLUT_WINDOW_Y* = 101
WINDOW_WIDTH* = 102 GLUT_WINDOW_WIDTH* = 102
WINDOW_HEIGHT* = 103 GLUT_WINDOW_HEIGHT* = 103
WINDOW_BUFFER_SIZE* = 104 GLUT_WINDOW_BUFFER_SIZE* = 104
WINDOW_STENCIL_SIZE* = 105 GLUT_WINDOW_STENCIL_SIZE* = 105
WINDOW_DEPTH_SIZE* = 106 GLUT_WINDOW_DEPTH_SIZE* = 106
WINDOW_RED_SIZE* = 107 GLUT_WINDOW_RED_SIZE* = 107
WINDOW_GREEN_SIZE* = 108 GLUT_WINDOW_GREEN_SIZE* = 108
WINDOW_BLUE_SIZE* = 109 GLUT_WINDOW_BLUE_SIZE* = 109
WINDOW_ALPHA_SIZE* = 110 GLUT_WINDOW_ALPHA_SIZE* = 110
WINDOW_ACCUM_RED_SIZE* = 111 GLUT_WINDOW_ACCUM_RED_SIZE* = 111
WINDOW_ACCUM_GREEN_SIZE* = 112 GLUT_WINDOW_ACCUM_GREEN_SIZE* = 112
WINDOW_ACCUM_BLUE_SIZE* = 113 GLUT_WINDOW_ACCUM_BLUE_SIZE* = 113
WINDOW_ACCUM_ALPHA_SIZE* = 114 GLUT_WINDOW_ACCUM_ALPHA_SIZE* = 114
WINDOW_DOUBLEBUFFER* = 115 GLUT_WINDOW_DOUBLEBUFFER* = 115
WINDOW_RGBA* = 116 GLUT_WINDOW_RGBA* = 116
WINDOW_PARENT* = 117 GLUT_WINDOW_PARENT* = 117
WINDOW_NUM_CHILDREN* = 118 GLUT_WINDOW_NUM_CHILDREN* = 118
WINDOW_COLORMAP_SIZE* = 119 GLUT_WINDOW_COLORMAP_SIZE* = 119
WINDOW_NUM_SAMPLES* = 120 GLUT_WINDOW_NUM_SAMPLES* = 120
WINDOW_STEREO* = 121 GLUT_WINDOW_STEREO* = 121
WINDOW_CURSOR* = 122 GLUT_WINDOW_CURSOR* = 122
SCREEN_WIDTH* = 200 GLUT_SCREEN_WIDTH* = 200
SCREEN_HEIGHT* = 201 GLUT_SCREEN_HEIGHT* = 201
SCREEN_WIDTH_MM* = 202 GLUT_SCREEN_WIDTH_MM* = 202
SCREEN_HEIGHT_MM* = 203 GLUT_SCREEN_HEIGHT_MM* = 203
MENU_NUM_ITEMS* = 300 GLUT_MENU_NUM_ITEMS* = 300
DISPLAY_MODE_POSSIBLE* = 400 GLUT_DISPLAY_MODE_POSSIBLE* = 400
INIT_WINDOW_X* = 500 GLUT_INIT_WINDOW_X* = 500
INIT_WINDOW_Y* = 501 GLUT_INIT_WINDOW_Y* = 501
INIT_WINDOW_WIDTH* = 502 GLUT_INIT_WINDOW_WIDTH* = 502
INIT_WINDOW_HEIGHT* = 503 GLUT_INIT_WINDOW_HEIGHT* = 503
constINIT_DISPLAY_MODE* = 504 constGLUT_INIT_DISPLAY_MODE* = 504
ELAPSED_TIME* = 700 GLUT_ELAPSED_TIME* = 700
WINDOW_FORMAT_ID* = 123 # glutDeviceGet parameters. GLUT_WINDOW_FORMAT_ID* = 123 # glutDeviceGet parameters.
HAS_KEYBOARD* = 600 GLUT_HAS_KEYBOARD* = 600
HAS_MOUSE* = 601 GLUT_HAS_MOUSE* = 601
HAS_SPACEBALL* = 602 GLUT_HAS_SPACEBALL* = 602
HAS_DIAL_AND_BUTTON_BOX* = 603 GLUT_HAS_DIAL_AND_BUTTON_BOX* = 603
HAS_TABLET* = 604 GLUT_HAS_TABLET* = 604
NUM_MOUSE_BUTTONS* = 605 GLUT_NUM_MOUSE_BUTTONS* = 605
NUM_SPACEBALL_BUTTONS* = 606 GLUT_NUM_SPACEBALL_BUTTONS* = 606
NUM_BUTTON_BOX_BUTTONS* = 607 GLUT_NUM_BUTTON_BOX_BUTTONS* = 607
NUM_DIALS* = 608 GLUT_NUM_DIALS* = 608
NUM_TABLET_BUTTONS* = 609 GLUT_NUM_TABLET_BUTTONS* = 609
DEVICE_IGNORE_KEY_REPEAT* = 610 GLUT_DEVICE_IGNORE_KEY_REPEAT* = 610
DEVICE_KEY_REPEAT* = 611 GLUT_DEVICE_KEY_REPEAT* = 611
HAS_JOYSTICK* = 612 GLUT_HAS_JOYSTICK* = 612
OWNS_JOYSTICK* = 613 GLUT_OWNS_JOYSTICK* = 613
JOYSTICK_BUTTONS* = 614 GLUT_JOYSTICK_BUTTONS* = 614
JOYSTICK_AXES* = 615 GLUT_JOYSTICK_AXES* = 615
JOYSTICK_POLL_RATE* = 616 # glutLayerGet parameters. GLUT_JOYSTICK_POLL_RATE* = 616 # glutLayerGet parameters.
OVERLAY_POSSIBLE* = 800 GLUT_OVERLAY_POSSIBLE* = 800
LAYER_IN_USE* = 801 GLUT_LAYER_IN_USE* = 801
HAS_OVERLAY* = 802 GLUT_HAS_OVERLAY* = 802
TRANSPARENT_INDEX* = 803 GLUT_TRANSPARENT_INDEX* = 803
NORMAL_DAMAGED* = 804 GLUT_NORMAL_DAMAGED* = 804
OVERLAY_DAMAGED* = 805 # glutVideoResizeGet parameters. GLUT_OVERLAY_DAMAGED* = 805 # glutVideoResizeGet parameters.
VIDEO_RESIZE_POSSIBLE* = 900 GLUT_VIDEO_RESIZE_POSSIBLE* = 900
VIDEO_RESIZE_IN_USE* = 901 GLUT_VIDEO_RESIZE_IN_USE* = 901
VIDEO_RESIZE_X_DELTA* = 902 GLUT_VIDEO_RESIZE_X_DELTA* = 902
VIDEO_RESIZE_Y_DELTA* = 903 GLUT_VIDEO_RESIZE_Y_DELTA* = 903
VIDEO_RESIZE_WIDTH_DELTA* = 904 GLUT_VIDEO_RESIZE_WIDTH_DELTA* = 904
VIDEO_RESIZE_HEIGHT_DELTA* = 905 GLUT_VIDEO_RESIZE_HEIGHT_DELTA* = 905
VIDEO_RESIZE_X* = 906 GLUT_VIDEO_RESIZE_X* = 906
VIDEO_RESIZE_Y* = 907 GLUT_VIDEO_RESIZE_Y* = 907
VIDEO_RESIZE_WIDTH* = 908 GLUT_VIDEO_RESIZE_WIDTH* = 908
VIDEO_RESIZE_HEIGHT* = 909 # glutGetModifiers return mask. GLUT_VIDEO_RESIZE_HEIGHT* = 909 # glutGetModifiers return mask.
ACTIVE_SHIFT* = 1 GLUT_ACTIVE_SHIFT* = 1
ACTIVE_CTRL* = 2 GLUT_ACTIVE_CTRL* = 2
ACTIVE_ALT* = 4 # glutSetCursor parameters. GLUT_ACTIVE_ALT* = 4 # glutSetCursor parameters.
# Basic arrows. # Basic arrows.
CURSOR_RIGHT_ARROW* = 0 GLUT_CURSOR_RIGHT_ARROW* = 0
CURSOR_LEFT_ARROW* = 1 # Symbolic cursor shapes. GLUT_CURSOR_LEFT_ARROW* = 1 # Symbolic cursor shapes.
CURSOR_INFO* = 2 GLUT_CURSOR_INFO* = 2
CURSOR_DESTROY* = 3 GLUT_CURSOR_DESTROY* = 3
CURSOR_HELP* = 4 GLUT_CURSOR_HELP* = 4
CURSOR_CYCLE* = 5 GLUT_CURSOR_CYCLE* = 5
CURSOR_SPRAY* = 6 GLUT_CURSOR_SPRAY* = 6
CURSOR_WAIT* = 7 GLUT_CURSOR_WAIT* = 7
CURSOR_TEXT* = 8 GLUT_CURSOR_TEXT* = 8
CURSOR_CROSSHAIR* = 9 # Directional cursors. GLUT_CURSOR_CROSSHAIR* = 9 # Directional cursors.
CURSOR_UP_DOWN* = 10 GLUT_CURSOR_UP_DOWN* = 10
CURSOR_LEFT_RIGHT* = 11 # Sizing cursors. GLUT_CURSOR_LEFT_RIGHT* = 11 # Sizing cursors.
CURSOR_TOP_SIDE* = 12 GLUT_CURSOR_TOP_SIDE* = 12
CURSOR_BOTTOM_SIDE* = 13 GLUT_CURSOR_BOTTOM_SIDE* = 13
CURSOR_LEFT_SIDE* = 14 GLUT_CURSOR_LEFT_SIDE* = 14
CURSOR_RIGHT_SIDE* = 15 GLUT_CURSOR_RIGHT_SIDE* = 15
CURSOR_TOP_LEFT_CORNER* = 16 GLUT_CURSOR_TOP_LEFT_CORNER* = 16
CURSOR_TOP_RIGHT_CORNER* = 17 GLUT_CURSOR_TOP_RIGHT_CORNER* = 17
CURSOR_BOTTOM_RIGHT_CORNER* = 18 GLUT_CURSOR_BOTTOM_RIGHT_CORNER* = 18
CURSOR_BOTTOM_LEFT_CORNER* = 19 # Inherit from parent window. GLUT_CURSOR_BOTTOM_LEFT_CORNER* = 19 # Inherit from parent window.
CURSOR_INHERIT* = 100 # Blank cursor. GLUT_CURSOR_INHERIT* = 100 # Blank cursor.
CURSOR_NONE* = 101 # Fullscreen crosshair (if available). GLUT_CURSOR_NONE* = 101 # Fullscreen crosshair (if available).
CURSOR_FULL_CROSSHAIR* = 102 # GLUT device control sub-API. GLUT_CURSOR_FULL_CROSSHAIR* = 102 # GLUT device control sub-API.
# glutSetKeyRepeat modes. # glutSetKeyRepeat modes.
KEY_REPEAT_OFF* = 0 GLUT_KEY_REPEAT_OFF* = 0
KEY_REPEAT_ON* = 1 GLUT_KEY_REPEAT_ON* = 1
KEY_REPEAT_DEFAULT* = 2 # Joystick button masks. GLUT_KEY_REPEAT_DEFAULT* = 2 # Joystick button masks.
JOYSTICK_BUTTON_A* = 1 GLUT_JOYSTICK_BUTTON_A* = 1
JOYSTICK_BUTTON_B* = 2 GLUT_JOYSTICK_BUTTON_B* = 2
JOYSTICK_BUTTON_C* = 4 GLUT_JOYSTICK_BUTTON_C* = 4
JOYSTICK_BUTTON_D* = 8 # GLUT game mode sub-API. GLUT_JOYSTICK_BUTTON_D* = 8 # GLUT game mode sub-API.
# glutGameModeGet. # glutGameModeGet.
GAME_MODE_ACTIVE* = 0 GLUT_GAME_MODE_ACTIVE* = 0
GAME_MODE_POSSIBLE* = 1 GLUT_GAME_MODE_POSSIBLE* = 1
GAME_MODE_WIDTH* = 2 GLUT_GAME_MODE_WIDTH* = 2
GAME_MODE_HEIGHT* = 3 GLUT_GAME_MODE_HEIGHT* = 3
GAME_MODE_PIXEL_DEPTH* = 4 GLUT_GAME_MODE_PIXEL_DEPTH* = 4
GAME_MODE_REFRESH_RATE* = 5 GLUT_GAME_MODE_REFRESH_RATE* = 5
GAME_MODE_DISPLAY_CHANGED* = 6 # GLUT initialization sub-API. GLUT_GAME_MODE_DISPLAY_CHANGED* = 6 # GLUT initialization sub-API.
{.push cdecl, dynlib: dllname, importc: "glut$1".} proc glutInit*(argcp: ptr cint, argv: pointer){.dynlib: dllname,
proc Init*(argcp: ptr cint, argv: pointer) importc: "glutInit".}
proc Init*() = proc glutInit*() =
## version that passes `argc` and `argc` implicitely. ## version that passes `argc` and `argc` implicitely.
var var
cmdLine {.importc: "cmdLine".}: array[0..255, cstring] cmdLine {.importc: "cmdLine".}: array[0..255, cstring]
cmdCount {.importc: "cmdCount".}: cint cmdCount {.importc: "cmdCount".}: cint
glutInit(addr(cmdCount), addr(cmdLine)) glutInit(addr(cmdCount), addr(cmdLine))
proc InitDisplayMode*(mode: int16) proc glutInitDisplayMode*(mode: int16){.dynlib: dllname,
proc InitDisplayString*(str: cstring) importc: "glutInitDisplayMode".}
proc InitWindowPosition*(x, y: int) proc glutInitDisplayString*(str: cstring){.dynlib: dllname,
proc InitWindowSize*(width, height: int) importc: "glutInitDisplayString".}
proc MainLoop*() proc glutInitWindowPosition*(x, y: int){.dynlib: dllname,
importc: "glutInitWindowPosition".}
proc glutInitWindowSize*(width, height: int){.dynlib: dllname,
importc: "glutInitWindowSize".}
proc glutMainLoop*(){.dynlib: dllname, importc: "glutMainLoop".}
# GLUT window sub-API. # GLUT window sub-API.
proc CreateWindow*(title: cstring): int proc glutCreateWindow*(title: cstring): int{.dynlib: dllname,
proc CreateSubWindow*(win, x, y, width, height: int): int importc: "glutCreateWindow".}
proc DestroyWindow*(win: int) proc glutCreateSubWindow*(win, x, y, width, height: int): int{.dynlib: dllname,
proc PostRedisplay*() importc: "glutCreateSubWindow".}
proc PostWindowRedisplay*(win: int) proc glutDestroyWindow*(win: int){.dynlib: dllname, importc: "glutDestroyWindow".}
proc SwapBuffers*() proc glutPostRedisplay*(){.dynlib: dllname, importc: "glutPostRedisplay".}
proc SetWindow*(win: int) proc glutPostWindowRedisplay*(win: int){.dynlib: dllname,
proc SetWindowTitle*(title: cstring) importc: "glutPostWindowRedisplay".}
proc SetIconTitle*(title: cstring) proc glutSwapBuffers*(){.dynlib: dllname, importc: "glutSwapBuffers".}
proc PositionWindow*(x, y: int) proc glutGetWindow*(): int{.dynlib: dllname, importc: "glutGetWindow".}
proc ReshapeWindow*(width, height: int) proc glutSetWindow*(win: int){.dynlib: dllname, importc: "glutSetWindow".}
proc PopWindow*() proc glutSetWindowTitle*(title: cstring){.dynlib: dllname,
proc PushWindow*() importc: "glutSetWindowTitle".}
proc IconifyWindow*() proc glutSetIconTitle*(title: cstring){.dynlib: dllname,
proc ShowWindow*() importc: "glutSetIconTitle".}
proc HideWindow*() proc glutPositionWindow*(x, y: int){.dynlib: dllname,
proc FullScreen*() importc: "glutPositionWindow".}
proc SetCursor*(cursor: int) proc glutReshapeWindow*(width, height: int){.dynlib: dllname,
proc Warppointer*(x, y: int) importc: "glutReshapeWindow".}
proc glutPopWindow*(){.dynlib: dllname, importc: "glutPopWindow".}
proc glutPushWindow*(){.dynlib: dllname, importc: "glutPushWindow".}
proc glutIconifyWindow*(){.dynlib: dllname, importc: "glutIconifyWindow".}
proc glutShowWindow*(){.dynlib: dllname, importc: "glutShowWindow".}
proc glutHideWindow*(){.dynlib: dllname, importc: "glutHideWindow".}
proc glutFullScreen*(){.dynlib: dllname, importc: "glutFullScreen".}
proc glutSetCursor*(cursor: int){.dynlib: dllname, importc: "glutSetCursor".}
proc glutWarpPointer*(x, y: int){.dynlib: dllname, importc: "glutWarpPointer".}
# GLUT overlay sub-API. # GLUT overlay sub-API.
proc EstablishOverlay*() proc glutEstablishOverlay*(){.dynlib: dllname, importc: "glutEstablishOverlay".}
proc RemoveOverlay*() proc glutRemoveOverlay*(){.dynlib: dllname, importc: "glutRemoveOverlay".}
proc UseLayer*(layer: GLenum) proc glutUseLayer*(layer: TGLenum){.dynlib: dllname, importc: "glutUseLayer".}
proc PostOverlayRedisplay*() proc glutPostOverlayRedisplay*(){.dynlib: dllname,
proc PostWindowOverlayRedisplay*(win: int) importc: "glutPostOverlayRedisplay".}
proc ShowOverlay*() proc glutPostWindowOverlayRedisplay*(win: int){.dynlib: dllname,
proc HideOverlay*() importc: "glutPostWindowOverlayRedisplay".}
proc glutShowOverlay*(){.dynlib: dllname, importc: "glutShowOverlay".}
proc glutHideOverlay*(){.dynlib: dllname, importc: "glutHideOverlay".}
# GLUT menu sub-API. # GLUT menu sub-API.
proc CreateMenu*(callback: OneIntCallback): int proc glutCreateMenu*(callback: TGlut1IntCallback): int{.dynlib: dllname,
proc DestroyMenu*(menu: int) importc: "glutCreateMenu".}
proc GetMenu*(): int proc glutDestroyMenu*(menu: int){.dynlib: dllname, importc: "glutDestroyMenu".}
proc SetMenu*(menu: int) proc glutGetMenu*(): int{.dynlib: dllname, importc: "glutGetMenu".}
proc AddMenuEntry*(caption: cstring, value: int) proc glutSetMenu*(menu: int){.dynlib: dllname, importc: "glutSetMenu".}
proc AddSubMenu*(caption: cstring, submenu: int) proc glutAddMenuEntry*(caption: cstring, value: int){.dynlib: dllname,
proc ChangeToMenuEntry*(item: int, caption: cstring, value: int) importc: "glutAddMenuEntry".}
proc ChangeToSubMenu*(item: int, caption: cstring, submenu: int) proc glutAddSubMenu*(caption: cstring, submenu: int){.dynlib: dllname,
proc RemoveMenuItem*(item: int) importc: "glutAddSubMenu".}
proc AttachMenu*(button: int) proc glutChangeToMenuEntry*(item: int, caption: cstring, value: int){.
proc DetachMenu*(button: int) dynlib: dllname, importc: "glutChangeToMenuEntry".}
proc glutChangeToSubMenu*(item: int, caption: cstring, submenu: int){.
dynlib: dllname, importc: "glutChangeToSubMenu".}
proc glutRemoveMenuItem*(item: int){.dynlib: dllname,
importc: "glutRemoveMenuItem".}
proc glutAttachMenu*(button: int){.dynlib: dllname, importc: "glutAttachMenu".}
proc glutDetachMenu*(button: int){.dynlib: dllname, importc: "glutDetachMenu".}
# GLUT window callback sub-API. # GLUT window callback sub-API.
proc DisplayFunc*(f: VoidCallback) proc glutDisplayFunc*(f: TGlutVoidCallback){.dynlib: dllname,
proc CloseFunc*(f: VoidCallback) importc: "glutDisplayFunc".}
proc ReshapeFunc*(f: TwoIntCallback) proc glutReshapeFunc*(f: TGlut2IntCallback){.dynlib: dllname,
proc KeyboardFunc*(f: OneCharTwoIntCallback) importc: "glutReshapeFunc".}
proc MouseFunc*(f: FourIntCallback) proc glutKeyboardFunc*(f: TGlut1Char2IntCallback){.dynlib: dllname,
proc MotionFunc*(f: TwoIntCallback) importc: "glutKeyboardFunc".}
proc PassiveMotionFunc*(f: TwoIntCallback) proc glutMouseFunc*(f: TGlut4IntCallback){.dynlib: dllname,
proc EntryFunc*(f: OneIntCallback) importc: "glutMouseFunc".}
proc VisibilityFunc*(f: OneIntCallback) proc glutMotionFunc*(f: TGlut2IntCallback){.dynlib: dllname,
proc IdleFunc*(f: VoidCallback) importc: "glutMotionFunc".}
proc TimerFunc*(millis: int16, f: OneIntCallback, value: int) proc glutPassiveMotionFunc*(f: TGlut2IntCallback){.dynlib: dllname,
proc MenuStateFunc*(f: OneIntCallback) importc: "glutPassiveMotionFunc".}
proc SpecialFunc*(f: ThreeIntCallback) proc glutEntryFunc*(f: TGlut1IntCallback){.dynlib: dllname,
proc SpaceballMotionFunc*(f: ThreeIntCallback) importc: "glutEntryFunc".}
proc SpaceballRotateFunc*(f: ThreeIntCallback) proc glutVisibilityFunc*(f: TGlut1IntCallback){.dynlib: dllname,
proc SpaceballButtonFunc*(f: TwoIntCallback) importc: "glutVisibilityFunc".}
proc ButtonBoxFunc*(f: TwoIntCallback) proc glutIdleFunc*(f: TGlutVoidCallback){.dynlib: dllname,
proc DialsFunc*(f: TwoIntCallback) importc: "glutIdleFunc".}
proc TabletMotionFunc*(f: TwoIntCallback) proc glutTimerFunc*(millis: int16, f: TGlut1IntCallback, value: int){.
proc TabletButtonFunc*(f: FourIntCallback) dynlib: dllname, importc: "glutTimerFunc".}
proc MenuStatusFunc*(f: ThreeIntCallback) proc glutMenuStateFunc*(f: TGlut1IntCallback){.dynlib: dllname,
proc OverlayDisplayFunc*(f: VoidCallback) importc: "glutMenuStateFunc".}
proc WindowStatusFunc*(f: OneIntCallback) proc glutSpecialFunc*(f: TGlut3IntCallback){.dynlib: dllname,
proc KeyboardUpFunc*(f: OneCharTwoIntCallback) importc: "glutSpecialFunc".}
proc SpecialUpFunc*(f: ThreeIntCallback) proc glutSpaceballMotionFunc*(f: TGlut3IntCallback){.dynlib: dllname,
proc JoystickFunc*(f: OneUIntThreeIntCallback, pollInterval: int) importc: "glutSpaceballMotionFunc".}
proc glutSpaceballRotateFunc*(f: TGlut3IntCallback){.dynlib: dllname,
importc: "glutSpaceballRotateFunc".}
proc glutSpaceballButtonFunc*(f: TGlut2IntCallback){.dynlib: dllname,
importc: "glutSpaceballButtonFunc".}
proc glutButtonBoxFunc*(f: TGlut2IntCallback){.dynlib: dllname,
importc: "glutButtonBoxFunc".}
proc glutDialsFunc*(f: TGlut2IntCallback){.dynlib: dllname,
importc: "glutDialsFunc".}
proc glutTabletMotionFunc*(f: TGlut2IntCallback){.dynlib: dllname,
importc: "glutTabletMotionFunc".}
proc glutTabletButtonFunc*(f: TGlut4IntCallback){.dynlib: dllname,
importc: "glutTabletButtonFunc".}
proc glutMenuStatusFunc*(f: TGlut3IntCallback){.dynlib: dllname,
importc: "glutMenuStatusFunc".}
proc glutOverlayDisplayFunc*(f: TGlutVoidCallback){.dynlib: dllname,
importc: "glutOverlayDisplayFunc".}
proc glutWindowStatusFunc*(f: TGlut1IntCallback){.dynlib: dllname,
importc: "glutWindowStatusFunc".}
proc glutKeyboardUpFunc*(f: TGlut1Char2IntCallback){.dynlib: dllname,
importc: "glutKeyboardUpFunc".}
proc glutSpecialUpFunc*(f: TGlut3IntCallback){.dynlib: dllname,
importc: "glutSpecialUpFunc".}
proc glutJoystickFunc*(f: TGlut1UInt3IntCallback, pollInterval: int){.
dynlib: dllname, importc: "glutJoystickFunc".}
# GLUT color index sub-API. # GLUT color index sub-API.
proc SetColor*(cell: int, red, green, blue: GLfloat) proc glutSetColor*(cell: int, red, green, blue: TGLfloat){.dynlib: dllname,
proc GetColor*(ndx, component: int): GLfloat importc: "glutSetColor".}
proc CopyColormap*(win: int) proc glutGetColor*(ndx, component: int): TGLfloat{.dynlib: dllname,
importc: "glutGetColor".}
proc glutCopyColormap*(win: int){.dynlib: dllname, importc: "glutCopyColormap".}
# GLUT state retrieval sub-API. # GLUT state retrieval sub-API.
proc Get*(t: GLenum): int proc glutGet*(t: TGLenum): int{.dynlib: dllname, importc: "glutGet".}
proc DeviceGet*(t: GLenum): int proc glutDeviceGet*(t: TGLenum): int{.dynlib: dllname, importc: "glutDeviceGet".}
# GLUT extension support sub-API # GLUT extension support sub-API
proc GetModifiers*(): int proc glutExtensionSupported*(name: cstring): int{.dynlib: dllname,
proc LayerGet*(t: GLenum): int importc: "glutExtensionSupported".}
proc ExtensionSupported*(name: cstring): int proc glutGetModifiers*(): int{.dynlib: dllname, importc: "glutGetModifiers".}
proc glutLayerGet*(t: TGLenum): int{.dynlib: dllname, importc: "glutLayerGet".}
# GLUT font sub-API # GLUT font sub-API
proc BitmapCharacter*(font: pointer, character: int) proc glutBitmapCharacter*(font: pointer, character: int){.dynlib: dllname,
proc BitmapWidth*(font: pointer, character: int): int importc: "glutBitmapCharacter".}
proc StrokeCharacter*(font: pointer, character: int) proc glutBitmapWidth*(font: pointer, character: int): int{.dynlib: dllname,
proc StrokeWidth*(font: pointer, character: int): int importc: "glutBitmapWidth".}
proc BitmapLength*(font: pointer, str: cstring): int proc glutStrokeCharacter*(font: pointer, character: int){.dynlib: dllname,
proc StrokeLength*(font: pointer, str: cstring): int importc: "glutStrokeCharacter".}
proc glutStrokeWidth*(font: pointer, character: int): int{.dynlib: dllname,
importc: "glutStrokeWidth".}
proc glutBitmapLength*(font: pointer, str: cstring): int{.dynlib: dllname,
importc: "glutBitmapLength".}
proc glutStrokeLength*(font: pointer, str: cstring): int{.dynlib: dllname,
importc: "glutStrokeLength".}
# GLUT pre-built models sub-API # GLUT pre-built models sub-API
proc WireSphere*(radius: GLdouble, slices, stacks: GLint) proc glutWireSphere*(radius: TGLdouble, slices, stacks: TGLint){.
proc SolidSphere*(radius: GLdouble, slices, stacks: GLint) dynlib: dllname, importc: "glutWireSphere".}
proc WireCone*(base, height: GLdouble, slices, stacks: GLint) proc glutSolidSphere*(radius: TGLdouble, slices, stacks: TGLint){.
proc SolidCone*(base, height: GLdouble, slices, stacks: GLint) dynlib: dllname, importc: "glutSolidSphere".}
proc WireCube*(size: GLdouble) proc glutWireCone*(base, height: TGLdouble, slices, stacks: TGLint){.
proc SolidCube*(size: GLdouble) dynlib: dllname, importc: "glutWireCone".}
proc WireTorus*(innerRadius, outerRadius: GLdouble, sides, rings: GLint) proc glutSolidCone*(base, height: TGLdouble, slices, stacks: TGLint){.
proc SolidTorus*(innerRadius, outerRadius: GLdouble, sides, rings: GLint) dynlib: dllname, importc: "glutSolidCone".}
proc WireDodecahedron*() proc glutWireCube*(size: TGLdouble){.dynlib: dllname, importc: "glutWireCube".}
proc SolidDodecahedron*() proc glutSolidCube*(size: TGLdouble){.dynlib: dllname, importc: "glutSolidCube".}
proc WireTeapot*(size: GLdouble) proc glutWireTorus*(innerRadius, outerRadius: TGLdouble, sides, rings: TGLint){.
proc SolidTeapot*(size: GLdouble) dynlib: dllname, importc: "glutWireTorus".}
proc WireOctahedron*() proc glutSolidTorus*(innerRadius, outerRadius: TGLdouble, sides, rings: TGLint){.
proc SolidOctahedron*() dynlib: dllname, importc: "glutSolidTorus".}
proc WireTetrahedron*() proc glutWireDodecahedron*(){.dynlib: dllname, importc: "glutWireDodecahedron".}
proc SolidTetrahedron*() proc glutSolidDodecahedron*(){.dynlib: dllname, importc: "glutSolidDodecahedron".}
proc WireIcosahedron*() proc glutWireTeapot*(size: TGLdouble){.dynlib: dllname,
proc SolidIcosahedron*() importc: "glutWireTeapot".}
proc glutSolidTeapot*(size: TGLdouble){.dynlib: dllname,
importc: "glutSolidTeapot".}
proc glutWireOctahedron*(){.dynlib: dllname, importc: "glutWireOctahedron".}
proc glutSolidOctahedron*(){.dynlib: dllname, importc: "glutSolidOctahedron".}
proc glutWireTetrahedron*(){.dynlib: dllname, importc: "glutWireTetrahedron".}
proc glutSolidTetrahedron*(){.dynlib: dllname, importc: "glutSolidTetrahedron".}
proc glutWireIcosahedron*(){.dynlib: dllname, importc: "glutWireIcosahedron".}
proc glutSolidIcosahedron*(){.dynlib: dllname, importc: "glutSolidIcosahedron".}
# GLUT video resize sub-API. # GLUT video resize sub-API.
proc VideoResizeGet*(param: GLenum): int proc glutVideoResizeGet*(param: TGLenum): int{.dynlib: dllname,
proc SetupVideoResizing*() importc: "glutVideoResizeGet".}
proc StopVideoResizing*() proc glutSetupVideoResizing*(){.dynlib: dllname,
proc VideoResize*(x, y, width, height: int) importc: "glutSetupVideoResizing".}
proc VideoPan*(x, y, width, height: int) proc glutStopVideoResizing*(){.dynlib: dllname, importc: "glutStopVideoResizing".}
proc glutVideoResize*(x, y, width, height: int){.dynlib: dllname,
importc: "glutVideoResize".}
proc glutVideoPan*(x, y, width, height: int){.dynlib: dllname,
importc: "glutVideoPan".}
# GLUT debugging sub-API. # GLUT debugging sub-API.
proc ReportErrors*() proc glutReportErrors*(){.dynlib: dllname, importc: "glutReportErrors".}
# GLUT device control sub-API. # GLUT device control sub-API.
proc IgnoreKeyRepeat*(ignore: int) proc glutIgnoreKeyRepeat*(ignore: int){.dynlib: dllname,
proc SetKeyRepeat*(repeatMode: int) importc: "glutIgnoreKeyRepeat".}
proc ForceJoystickFunc*() proc glutSetKeyRepeat*(repeatMode: int){.dynlib: dllname,
importc: "glutSetKeyRepeat".}
proc glutForceJoystickFunc*(){.dynlib: dllname, importc: "glutForceJoystickFunc".}
# GLUT game mode sub-API. # GLUT game mode sub-API.
#example glutGameModeString('1280x1024:32@75'); #example glutGameModeString('1280x1024:32@75');
proc GameModeString*(AString: cstring) proc glutGameModeString*(AString: cstring){.dynlib: dllname,
proc EnterGameMode*() importc: "glutGameModeString".}
proc LeaveGameMode*() proc glutEnterGameMode*(): int{.dynlib: dllname, importc: "glutEnterGameMode".}
proc GameModeGet*(mode: GLenum): int proc glutLeaveGameMode*(){.dynlib: dllname, importc: "glutLeaveGameMode".}
proc glutGameModeGet*(mode: TGLenum): int{.dynlib: dllname,
importc: "glutGameModeGet".}
# implementation # implementation
{.pop.} # dynlib: dllname, importc

View file

@ -37,55 +37,55 @@ else:
const const
dllname = "libGL.so" dllname = "libGL.so"
const const
USE_GL* = 1'i32 GLX_USE_GL* = 1'i32
BUFFER_SIZE* = 2'i32 GLX_BUFFER_SIZE* = 2'i32
LEVEL* = 3'i32 GLX_LEVEL* = 3'i32
RGBA* = 4'i32 GLX_RGBA* = 4'i32
DOUBLEBUFFER* = 5'i32 GLX_DOUBLEBUFFER* = 5'i32
STEREO* = 6'i32 GLX_STEREO* = 6'i32
AUX_BUFFERS* = 7'i32 GLX_AUX_BUFFERS* = 7'i32
RED_SIZE* = 8'i32 GLX_RED_SIZE* = 8'i32
GREEN_SIZE* = 9'i32 GLX_GREEN_SIZE* = 9'i32
BLUE_SIZE* = 10'i32 GLX_BLUE_SIZE* = 10'i32
ALPHA_SIZE* = 11'i32 GLX_ALPHA_SIZE* = 11'i32
DEPTH_SIZE* = 12'i32 GLX_DEPTH_SIZE* = 12'i32
STENCIL_SIZE* = 13'i32 GLX_STENCIL_SIZE* = 13'i32
ACCUM_RED_SIZE* = 14'i32 GLX_ACCUM_RED_SIZE* = 14'i32
ACCUM_GREEN_SIZE* = 15'i32 GLX_ACCUM_GREEN_SIZE* = 15'i32
ACCUM_BLUE_SIZE* = 16'i32 GLX_ACCUM_BLUE_SIZE* = 16'i32
ACCUM_ALPHA_SIZE* = 17'i32 # EXT_visual_info extension GLX_ACCUM_ALPHA_SIZE* = 17'i32 # GLX_EXT_visual_info extension
X_VISUAL_TYPE_EXT* = 0x00000022 GLX_X_VISUAL_TYPE_EXT* = 0x00000022
TRANSPARENT_TYPE_EXT* = 0x00000023 GLX_TRANSPARENT_TYPE_EXT* = 0x00000023
TRANSPARENT_INDEX_VALUE_EXT* = 0x00000024 GLX_TRANSPARENT_INDEX_VALUE_EXT* = 0x00000024
TRANSPARENT_RED_VALUE_EXT* = 0x00000025 GLX_TRANSPARENT_RED_VALUE_EXT* = 0x00000025
TRANSPARENT_GREEN_VALUE_EXT* = 0x00000026 GLX_TRANSPARENT_GREEN_VALUE_EXT* = 0x00000026
TRANSPARENT_BLUE_VALUE_EXT* = 0x00000027 GLX_TRANSPARENT_BLUE_VALUE_EXT* = 0x00000027
TRANSPARENT_ALPHA_VALUE_EXT* = 0x00000028 # Error codes returned by glXGetConfig: GLX_TRANSPARENT_ALPHA_VALUE_EXT* = 0x00000028 # Error codes returned by glXGetConfig:
BAD_SCREEN* = 1 GLX_BAD_SCREEN* = 1
BAD_ATTRIBUTE* = 2 GLX_BAD_ATTRIBUTE* = 2
NO_EXTENSION* = 3 GLX_NO_EXTENSION* = 3
BAD_VISUAL* = 4 GLX_BAD_VISUAL* = 4
BAD_CONTEXT* = 5 GLX_BAD_CONTEXT* = 5
BAD_VALUE* = 6 GLX_BAD_VALUE* = 6
BAD_ENUM* = 7 # GLX 1.1 and later: GLX_BAD_ENUM* = 7 # GLX 1.1 and later:
VENDOR* = 1 GLX_VENDOR* = 1
VERSION* = 2 GLX_VERSION* = 2
EXTENSIONS* = 3 # visual_info extension GLX_EXTENSIONS* = 3 # GLX_visual_info extension
TRUE_COLOR_EXT* = 0x00008002 GLX_TRUE_COLOR_EXT* = 0x00008002
DIRECT_COLOR_EXT* = 0x00008003 GLX_DIRECT_COLOR_EXT* = 0x00008003
PSEUDO_COLOR_EXT* = 0x00008004 GLX_PSEUDO_COLOR_EXT* = 0x00008004
STATIC_COLOR_EXT* = 0x00008005 GLX_STATIC_COLOR_EXT* = 0x00008005
GRAY_SCALE_EXT* = 0x00008006 GLX_GRAY_SCALE_EXT* = 0x00008006
STATIC_GRAY_EXT* = 0x00008007 GLX_STATIC_GRAY_EXT* = 0x00008007
NONE_EXT* = 0x00008000 GLX_NONE_EXT* = 0x00008000
TRANSPARENT_RGB_EXT* = 0x00008008 GLX_TRANSPARENT_RGB_EXT* = 0x00008008
TRANSPARENT_INDEX_EXT* = 0x00008009 GLX_TRANSPARENT_INDEX_EXT* = 0x00008009
type # From XLib: type # From XLib:
XPixmap* = TXID XPixmap* = TXID
XFont* = TXID XFont* = TXID
XColormap* = TXID XColormap* = TXID
GLXContext* = pointer GLXContext* = Pointer
GLXPixmap* = TXID GLXPixmap* = TXID
GLXDrawable* = TXID GLXDrawable* = TXID
GLXContextID* = TXID GLXContextID* = TXID
@ -97,38 +97,58 @@ type # From XLib:
TGLXDrawable* = GLXDrawable TGLXDrawable* = GLXDrawable
TGLXContextID* = GLXContextID TGLXContextID* = GLXContextID
{.push cdecl, dynlib: dllname, importc: "glX$1".} proc glXChooseVisual*(dpy: PDisplay, screen: int, attribList: ptr int32): PXVisualInfo{.
cdecl, dynlib: dllname, importc: "glXChooseVisual".}
proc glXChooseVisual*(dpy: PDisplay, screen: int, attribList: ptr int32): PXVisualInfo
proc glXCreateContext*(dpy: PDisplay, vis: PXVisualInfo, shareList: GLXContext, proc glXCreateContext*(dpy: PDisplay, vis: PXVisualInfo, shareList: GLXContext,
direct: bool): GLXContext direct: bool): GLXContext{.cdecl, dynlib: dllname,
proc glXDestroyContext*(dpy: PDisplay, ctx: GLXContext) importc: "glXCreateContext".}
proc glXMakeCurrent*(dpy: PDisplay, drawable: GLXDrawable, ctx: GLXContext): bool proc glXDestroyContext*(dpy: PDisplay, ctx: GLXContext){.cdecl, dynlib: dllname,
proc glXCopyContext*(dpy: PDisplay, src, dst: GLXContext, mask: int32) importc: "glXDestroyContext".}
proc glXSwapBuffers*(dpy: PDisplay, drawable: GLXDrawable) proc glXMakeCurrent*(dpy: PDisplay, drawable: GLXDrawable, ctx: GLXContext): bool{.
proc glXCreateGLXPixmap*(dpy: PDisplay, visual: PXVisualInfo, pixmap: XPixmap): GLXPixmap cdecl, dynlib: dllname, importc: "glXMakeCurrent".}
proc glXDestroyGLXPixmap*(dpy: PDisplay, pixmap: GLXPixmap) proc glXCopyContext*(dpy: PDisplay, src, dst: GLXContext, mask: int32){.cdecl,
proc glXQueryExtension*(dpy: PDisplay, errorb, event: var int): bool dynlib: dllname, importc: "glXCopyContext".}
proc glXQueryVersion*(dpy: PDisplay, maj, min: var int): bool proc glXSwapBuffers*(dpy: PDisplay, drawable: GLXDrawable){.cdecl,
proc glXIsDirect*(dpy: PDisplay, ctx: GLXContext): bool dynlib: dllname, importc: "glXSwapBuffers".}
proc glXCreateGLXPixmap*(dpy: PDisplay, visual: PXVisualInfo, pixmap: XPixmap): GLXPixmap{.
cdecl, dynlib: dllname, importc: "glXCreateGLXPixmap".}
proc glXDestroyGLXPixmap*(dpy: PDisplay, pixmap: GLXPixmap){.cdecl,
dynlib: dllname, importc: "glXDestroyGLXPixmap".}
proc glXQueryExtension*(dpy: PDisplay, errorb, event: var int): bool{.cdecl,
dynlib: dllname, importc: "glXQueryExtension".}
proc glXQueryVersion*(dpy: PDisplay, maj, min: var int): bool{.cdecl,
dynlib: dllname, importc: "glXQueryVersion".}
proc glXIsDirect*(dpy: PDisplay, ctx: GLXContext): bool{.cdecl, dynlib: dllname,
importc: "glXIsDirect".}
proc glXGetConfig*(dpy: PDisplay, visual: PXVisualInfo, attrib: int, proc glXGetConfig*(dpy: PDisplay, visual: PXVisualInfo, attrib: int,
value: var int): int value: var int): int{.cdecl, dynlib: dllname,
proc glXGetCurrentContext*(): GLXContext importc: "glXGetConfig".}
proc glXGetCurrentDrawable*(): GLXDrawable proc glXGetCurrentContext*(): GLXContext{.cdecl, dynlib: dllname,
proc glXWaitGL*() importc: "glXGetCurrentContext".}
proc glXWaitX*() proc glXGetCurrentDrawable*(): GLXDrawable{.cdecl, dynlib: dllname,
proc glXUseXFont*(font: XFont, first, count, list: int) importc: "glXGetCurrentDrawable".}
proc glXWaitGL*(){.cdecl, dynlib: dllname, importc: "glXWaitGL".}
proc glXWaitX*(){.cdecl, dynlib: dllname, importc: "glXWaitX".}
proc glXUseXFont*(font: XFont, first, count, list: int){.cdecl, dynlib: dllname,
importc: "glXUseXFont".}
# GLX 1.1 and later # GLX 1.1 and later
proc glXQueryExtensionsString*(dpy: PDisplay, screen: int): cstring proc glXQueryExtensionsString*(dpy: PDisplay, screen: int): cstring{.cdecl,
proc glXQueryServerString*(dpy: PDisplay, screen, name: int): cstring dynlib: dllname, importc: "glXQueryExtensionsString".}
proc glXGetClientString*(dpy: PDisplay, name: int): cstring proc glXQueryServerString*(dpy: PDisplay, screen, name: int): cstring{.cdecl,
dynlib: dllname, importc: "glXQueryServerString".}
proc glXGetClientString*(dpy: PDisplay, name: int): cstring{.cdecl,
dynlib: dllname, importc: "glXGetClientString".}
# Mesa GLX Extensions # Mesa GLX Extensions
proc glXCreateGLXPixmapMESA*(dpy: PDisplay, visual: PXVisualInfo, proc glXCreateGLXPixmapMESA*(dpy: PDisplay, visual: PXVisualInfo,
pixmap: XPixmap, cmap: XColormap): GLXPixmap pixmap: XPixmap, cmap: XColormap): GLXPixmap{.
proc glXReleaseBufferMESA*(dpy: PDisplay, d: GLXDrawable): bool cdecl, dynlib: dllname, importc: "glXCreateGLXPixmapMESA".}
proc glXReleaseBufferMESA*(dpy: PDisplay, d: GLXDrawable): bool{.cdecl,
dynlib: dllname, importc: "glXReleaseBufferMESA".}
proc glXCopySubBufferMESA*(dpy: PDisplay, drawbale: GLXDrawable, proc glXCopySubBufferMESA*(dpy: PDisplay, drawbale: GLXDrawable,
x, y, width, height: int) x, y, width, height: int){.cdecl, dynlib: dllname,
proc glXGetVideoSyncSGI*(counter: var int32): int importc: "glXCopySubBufferMESA".}
proc glXWaitVideoSyncSGI*(divisor, remainder: int, count: var int32): int proc glXGetVideoSyncSGI*(counter: var int32): int{.cdecl, dynlib: dllname,
importc: "glXGetVideoSyncSGI".}
proc glXWaitVideoSyncSGI*(divisor, remainder: int, count: var int32): int{.
cdecl, dynlib: dllname, importc: "glXWaitVideoSyncSGI".}
# implementation # implementation
{.pop.}

File diff suppressed because it is too large Load diff