moving BGL to rst format, first move file.
[blender.git] / doc / python_api / rst / bgl.rst
1 # Blender.BGL module (OpenGL wrapper)
2
3 """
4 The Blender.BGL submodule (the OpenGL wrapper).
5
6 B{New}: some GLU functions: L{gluLookAt}, etc.
7
8 The Blender.BGL submodule
9 =========================
10 (when accessing it from the Game Engine use BGL instead of Blender.BGL)
11
12 This module wraps OpenGL constants and functions, making them available from
13 within Blender Python.
14
15 The complete list can be retrieved from the module itself, by listing its
16 contents: dir(Blender.BGL).  A simple search on the net can point to more 
17 than enough material to teach OpenGL programming, from books to many 
18 collections of tutorials.
19
20 The "red book": "I{OpenGL Programming Guide: The Official Guide to Learning
21 OpenGL}" and the online NeHe tutorials are two of the best resources.
22
23 Example::
24   import Blender
25   from Blender.BGL import *
26   from Blender import Draw
27   R = G = B = 0
28   A = 1
29   title = "Testing BGL  + Draw"
30   instructions = "Use mouse buttons or wheel to change the background color."
31   quitting = " Press ESC or q to quit."
32   len1 = Draw.GetStringWidth(title)
33   len2 = Draw.GetStringWidth(instructions + quitting)
34   #
35   def show_win():
36     glClearColor(R,G,B,A)                # define color used to clear buffers 
37     glClear(GL_COLOR_BUFFER_BIT)         # use it to clear the color buffer
38     glColor3f(0.35,0.18,0.92)            # define default color
39     glBegin(GL_POLYGON)                  # begin a vertex data list
40     glVertex2i(165, 158)
41     glVertex2i(252, 55)
42     glVertex2i(104, 128)
43     glEnd()
44     glColor3f(0.4,0.4,0.4)               # change default color
45     glRecti(40, 96, 60+len1, 113)
46     glColor3f(1,1,1)
47     glRasterPos2i(50,100)                # move cursor to x = 50, y = 100
48     Draw.Text(title)                     # draw this text there
49     glRasterPos2i(350,40)                # move cursor again
50     Draw.Text(instructions + quitting)   # draw another msg
51     glBegin(GL_LINE_LOOP)                # begin a vertex-data list
52     glVertex2i(46,92)
53     glVertex2i(120,92)
54     glVertex2i(120,115)
55     glVertex2i(46,115)
56     glEnd()                              # close this list
57   #
58   def ev(evt, val):                      # event callback for Draw.Register()
59     global R,G,B,A                       # ... it handles input events
60     if evt == Draw.ESCKEY or evt == Draw.QKEY:
61       Draw.Exit()                        # this quits the script
62     elif not val: return
63     elif evt == Draw.LEFTMOUSE: R = 1 - R
64     elif evt == Draw.MIDDLEMOUSE: G = 1 - G
65     elif evt == Draw.RIGHTMOUSE: B = 1 - B
66     elif evt == Draw.WHEELUPMOUSE:
67       R += 0.1
68       if R > 1: R = 1
69     elif evt == Draw.WHEELDOWNMOUSE:
70       R -= 0.1
71       if R < 0: R = 0
72     else:
73       return                             # don't redraw if nothing changed
74     Draw.Redraw(1)                       # make changes visible.
75   #
76   Draw.Register(show_win, ev, None)      # start the main loop
77
78 @note: you can use the L{Image} module and L{Image.Image} BPy object to load
79     and set textures.  See L{Image.Image.glLoad} and L{Image.Image.glFree},
80     for example.
81 @see: U{www.opengl.org}
82 @see: U{nehe.gamedev.net}
83 """
84
85 def glAccum(op, value):
86   """
87   Operate on the accumulation buffer
88   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/accum.html}
89
90   @type op: Enumerated constant
91   @param op: The accumulation buffer operation. 
92   @type value: float
93   @param value: a value used in the accumulation buffer operation.
94   """
95
96 def glAlphaFunc(func, ref):
97   """
98   Specify the alpha test function
99   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/alphafunc.html}
100   
101   @type func: Enumerated constant
102   @param func: Specifies the alpha comparison function. 
103   @type ref: float
104   @param ref: The reference value that incoming alpha values are compared to. 
105   Clamped between 0 and 1.
106   """
107
108 def glAreTexturesResident(n, textures, residences):
109   """
110   Determine if textures are loaded in texture memory
111   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/aretexturesresident.html}
112
113   @type n: int
114   @param n: Specifies the number of textures to be queried.
115   @type textures: Buffer object I{type GL_INT}
116   @param textures: Specifies an array containing the names of the textures to be queried 
117   @type residences: Buffer object I{type GL_INT}(boolean)
118   @param residences: An array in which the texture residence status in returned.The residence status of a
119   texture named by an element of textures is returned in the corresponding element of residences.
120   """
121
122 def glBegin(mode):
123   """
124   Delimit the vertices of a primitive or a group of like primatives
125   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/begin.html}
126
127   @type mode: Enumerated constant
128   @param mode: Specifies the primitive that will be create from vertices between glBegin and
129   glEnd. 
130   """
131
132 def glBindTexture(target, texture):
133   """
134   Bind a named texture to a texturing target
135   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/bindtexture.html}
136
137   @type target: Enumerated constant
138   @param target: Specifies the target to which the texture is bound. 
139   @type texture: unsigned int
140   @param texture: Specifies the name of a texture.
141   """
142
143 def glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap):
144   """
145   Draw a bitmap
146   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/bitmap.html}
147
148   @type width, height: int
149   @param width, height: Specify the pixel width and height of the bitmap image.
150   @type xorig, yorig: float
151   @param xorig, yorig: Specify the location of the origin in the bitmap image. The origin is measured
152   from the lower left corner of the bitmap, with right and up being the positive axes.
153   @type xmove, ymove: float
154   @param xmove, ymove: Specify the x and y offsets to be added to the current raster position after 
155   the bitmap is drawn. 
156   @type bitmap: Buffer object I{type GL_BYTE}
157   @param bitmap: Specifies the address of the bitmap image. 
158   """
159
160 def glBlendFunc(sfactor, dfactor):
161   """
162   Specify pixel arithmetic
163   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/blendfunc.html}
164
165   @type sfactor: Enumerated constant
166   @param sfactor: Specifies how the red, green, blue, and alpha source blending factors are 
167   computed. 
168   @type dfactor: Enumerated constant
169   @param dfactor: Specifies how the red, green, blue, and alpha destination blending factors are 
170   computed. 
171   """
172
173 def glCallList(list):
174   """
175   Execute a display list
176   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/calllist.html}
177
178   @type list: unsigned int
179   @param list: Specifies the integer name of the display list to be executed.
180   """
181
182 def glCallLists(n, type, lists):
183   """
184   Execute a list of display lists
185   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/calllists.html}
186
187   @type n: int
188   @param n: Specifies the number of display lists to be executed. 
189   @type type: Enumerated constant
190   @param type: Specifies the type of values in lists. 
191   @type lists: Buffer object
192   @param lists: Specifies the address of an array of name offsets in the display list. 
193   The pointer type is void because the offsets can be bytes, shorts, ints, or floats, 
194   depending on the value of type.
195   """
196
197 def glClear(mask):
198   """
199   Clear buffers to preset values
200   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clear.html}
201
202   @type mask: Enumerated constant(s)
203   @param mask: Bitwise OR of masks that indicate the buffers to be cleared. 
204   """
205
206 def glClearAccum(red, green, blue, alpha):
207   """
208   Specify clear values for the accumulation buffer
209   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearaccum.html}
210
211   @type red, green, blue, alpha: float
212   @param red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the 
213   accumulation buffer is cleared. The initial values are all 0. 
214   """
215
216 def glClearColor(red, green, blue, alpha):
217   """
218   Specify clear values for the color buffers
219   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearcolor.html}
220
221   @type red, green, blue, alpha: float
222   @param red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the 
223   color buffers are cleared. The initial values are all 0. 
224   """
225
226 def glClearDepth(depth):
227   """
228   Specify the clear value for the depth buffer
229   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/cleardepth.html}
230
231   @type depth: int
232   @param depth: Specifies the depth value used when the depth buffer is cleared. 
233   The initial value is 1.  
234   """
235
236 def glClearIndex(c):
237   """
238   Specify the clear value for the color index buffers
239   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearindex.html}
240
241   @type c: float
242   @param c: Specifies the index used when the color index buffers are cleared. 
243   The initial value is 0. 
244   """
245
246 def glClearStencil(s):
247   """
248   Specify the clear value for the stencil buffer
249   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearstencil.html}
250
251   @type s: int
252   @param s: Specifies the index used when the stencil buffer is cleared. The initial value is 0. 
253   """
254
255 def glClipPlane (plane, equation):
256   """
257   Specify a plane against which all geometry is clipped
258   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clipplane.html}
259
260   @type plane: Enumerated constant
261   @param plane: Specifies which clipping plane is being positioned. 
262   @type equation: Buffer object I{type GL_FLOAT}(double)
263   @param equation: Specifies the address of an array of four double- precision floating-point 
264   values. These values are interpreted as a plane equation.
265   """
266
267 def glColor (red, green, blue, alpha):
268   """
269   B{glColor3b, glColor3d, glColor3f, glColor3i, glColor3s, glColor3ub, glColor3ui, glColor3us, 
270   glColor4b, glColor4d, glColor4f, glColor4i, glColor4s, glColor4ub, glColor4ui, glColor4us, 
271   glColor3bv, glColor3dv, glColor3fv, glColor3iv, glColor3sv, glColor3ubv, glColor3uiv, 
272   glColor3usv, glColor4bv, glColor4dv, glColor4fv, glColor4iv, glColor4sv, glColor4ubv, 
273   glColor4uiv, glColor4usv}
274
275   Set a new color.
276   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/color.html}
277
278   @type red, green, blue, alpha: Depends on function prototype. 
279   @param red, green, blue: Specify new red, green, and blue values for the current color. 
280   @param alpha: Specifies a new alpha value for the current color. Included only in the 
281   four-argument glColor4 commands. (With '4' colors only)
282   """
283
284 def glColorMask(red, green, blue, alpha):
285   """
286   Enable and disable writing of frame buffer color components
287   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/colormask.html}
288
289   @type red, green, blue, alpha: int (boolean)
290   @param red, green, blue, alpha: Specify whether red, green, blue, and alpha can or cannot be 
291   written into the frame buffer. The initial values are all GL_TRUE, indicating that the 
292   color components can be written. 
293   """
294
295 def glColorMaterial(face, mode):
296   """
297   Cause a material color to track the current color 
298   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/colormaterial.html}
299
300   @type face: Enumerated constant
301   @param face: Specifies whether front, back, or both front and back material parameters should 
302   track the current color. 
303   @type mode: Enumerated constant
304   @param mode: Specifies which of several material parameters track the current color. 
305   """
306
307 def glCopyPixels(x, y, width, height, type):
308   """
309   Copy pixels in the frame buffer
310   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/copypixels.html}
311
312   @type x, y: int
313   @param x, y: Specify the window coordinates of the lower left corner of the rectangular 
314   region of pixels to be copied. 
315   @type width, height: int
316   @param width,height: Specify the dimensions of the rectangular region of pixels to be copied. 
317   Both must be non-negative. 
318   @type type: Enumerated constant
319   @param type: Specifies whether color values, depth values, or stencil values are to be copied. 
320   """
321   
322   def glCopyTexImage2D(target, level, internalformat, x, y, width, height, border):
323   """
324   Copy pixels into a 2D texture image
325   @see: U{www.opengl.org/sdk/docs/man/xhtml/glCopyTexImage2D.xml}
326
327   @type target: Enumerated constant
328   @param target: Specifies the target texture. 
329   @type level: int
330   @param level: Specifies the level-of-detail number. Level 0 is the base image level. 
331   Level n is the nth mipmap reduction image. 
332   @type internalformat: int
333   @param internalformat: Specifies the number of color components in the texture. 
334   @type width: int
335   @type x, y: int
336   @param x, y:Specify the window coordinates of the first pixel that is copied 
337   from the frame buffer. This location is the lower left corner of a rectangular
338   block of pixels.
339   @param width: Specifies the width of the texture image. Must be 2n+2(border) for 
340   some integer n. All implementations support texture images that are at least 64 
341   texels wide. 
342   @type height: int
343   @param height: Specifies the height of the texture image. Must be 2m+2(border) for 
344   some integer m. All implementations support texture images that are at least 64 
345   texels high. 
346   @type border: int
347   @param border: Specifies the width of the border. Must be either 0 or 1. 
348   """
349
350 def glCullFace(mode):
351   """
352   Specify whether front- or back-facing facets can be culled 
353   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/cullface.html}
354
355   @type mode: Enumerated constant
356   @param mode: Specifies whether front- or back-facing facets are candidates for culling. 
357   """
358
359 def glDeleteLists(list, range):
360   """
361   Delete a contiguous group of display lists
362   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/deletelists.html}
363
364   @type list: unsigned int
365   @param list: Specifies the integer name of the first display list to delete
366   @type range: int
367   @param range: Specifies the number of display lists to delete
368   """
369
370 def glDeleteTextures(n, textures):
371   """
372   Delete named textures
373   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/deletetextures.html}
374
375   @type n: int
376   @param n: Specifies the number of textures to be deleted
377   @type textures: Buffer I{GL_INT}
378   @param textures: Specifies an array of textures to be deleted
379   """
380
381 def glDepthFunc(func):
382   """
383   Specify the value used for depth buffer comparisons 
384   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthfunc.html}
385
386   @type func: Enumerated constant
387   @param func: Specifies the depth comparison function. 
388   """
389
390 def glDepthMask(flag):
391   """
392   Enable or disable writing into the depth buffer
393   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthmask.html}
394
395   @type flag: int (boolean)
396   @param flag: Specifies whether the depth buffer is enabled for writing. If flag is GL_FALSE,
397   depth buffer writing is disabled. Otherwise, it is enabled. Initially, depth buffer 
398   writing is enabled. 
399   """
400
401 def glDepthRange(zNear, zFar):
402   """
403   Specify mapping of depth values from normalized device coordinates to window coordinates 
404   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthrange.html}
405
406   @type zNear: int
407   @param zNear: Specifies the mapping of the near clipping plane to window coordinates. 
408   The initial value is 0. 
409   @type zFar: int
410   @param zFar: Specifies the mapping of the far clipping plane to window coordinates. 
411   The initial value is 1. 
412   """
413
414 def glDisable(cap):
415   """
416   Disable server-side GL capabilities
417   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/enable.html}
418
419   @type cap: Enumerated constant
420   @param cap: Specifies a symbolic constant indicating a GL capability.
421   """
422
423 def glDrawBuffer(mode):
424   """
425   Specify which color buffers are to be drawn into
426   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawbuffer.html}
427
428   @type mode: Enumerated constant
429   @param mode: Specifies up to four color buffers to be drawn into. 
430   """
431
432 def glDrawPixels(width, height, format, type, pixels):
433   """
434   Write a block of pixels to the frame buffer
435   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawpixels.html}
436
437   @type width, height: int
438   @param width, height: Specify the dimensions of the pixel rectangle to be 
439   written into the frame buffer. 
440   @type format: Enumerated constant
441   @param format: Specifies the format of the pixel data. 
442   @type type: Enumerated constant
443   @param type: Specifies the data type for pixels. 
444   @type pixels: Buffer object 
445   @param pixels: Specifies a pointer to the pixel data. 
446   """
447
448 def glEdgeFlag (flag):
449   """
450   B{glEdgeFlag, glEdgeFlagv}
451
452   Flag edges as either boundary or non-boundary
453   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/edgeflag.html}
454
455   @type flag: Depends of function prototype
456   @param flag: Specifies the current edge flag value.The initial value is GL_TRUE. 
457   """
458
459 def glEnable(cap):
460   """
461   Enable server-side GL capabilities
462   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/enable.html}
463
464   @type cap: Enumerated constant
465   @param cap: Specifies a symbolic constant indicating a GL capability.
466   """
467
468 def glEnd():
469   """
470   Delimit the vertices of a primitive or group of like primitives
471   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/begin.html}
472   """
473
474 def glEndList():
475   """
476   Create or replace a display list
477   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/newlist.html}
478   """
479
480 def glEvalCoord (u,v):
481   """
482   B{glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv, 
483   glEvalCoord2dv, glEvalCoord2fv}
484
485   Evaluate enabled one- and two-dimensional maps
486   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalcoord.html}
487
488   @type u: Depends on function prototype.
489   @param u: Specifies a value that is the domain coordinate u to the basis function defined 
490   in a previous glMap1 or glMap2 command. If the function prototype ends in 'v' then
491   u specifies a pointer to an array containing either one or two domain coordinates. The first 
492   coordinate is u. The second coordinate is v, which is present only in glEvalCoord2 versions. 
493   @type v: Depends on function prototype. (only with '2' prototypes)
494   @param v: Specifies a value that is the domain coordinate v to the basis function defined 
495   in a previous glMap2 command. This argument is not present in a glEvalCoord1 command. 
496   """
497
498 def glEvalMesh (mode, i1, i2):
499   """
500   B{glEvalMesh1 or glEvalMesh2}
501
502   Compute a one- or two-dimensional grid of points or lines
503   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalmesh.html}
504
505   @type mode: Enumerated constant
506   @param mode: In glEvalMesh1, specifies whether to compute a one-dimensional 
507   mesh of points or lines.
508   @type i1, i2: int
509   @param i1, i2: Specify the first and last integer values for the grid domain variable i.
510   """
511
512 def glEvalPoint (i, j):
513   """
514   B{glEvalPoint1 and glEvalPoint2}
515
516   Generate and evaluate a single point in a mesh
517   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalpoint.html}
518
519   @type i: int
520   @param i: Specifies the integer value for grid domain variable i.
521   @type j: int (only with '2' prototypes)
522   @param j: Specifies the integer value for grid domain variable j (glEvalPoint2 only).
523   """
524
525 def glFeedbackBuffer (size, type, buffer):
526   """
527   Controls feedback mode
528   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/feedbackbuffer.html}
529
530   @type size: int
531   @param size:Specifies the maximum number of values that can be written into buffer. 
532   @type type: Enumerated constant
533   @param type:Specifies a symbolic constant that describes the information that 
534   will be returned for each vertex. 
535   @type buffer: Buffer object I{GL_FLOAT}
536   @param buffer: Returns the feedback data. 
537   """
538
539 def glFinish():
540   """
541   Block until all GL execution is complete
542   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/finish.html}
543   """
544
545 def glFlush():
546   """
547   Force Execution of GL commands in finite time
548   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/flush.html}
549   """
550
551 def glFog (pname, param):
552   """
553   B{glFogf, glFogi, glFogfv, glFogiv}
554
555   Specify fog parameters
556   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/fog.html}
557
558   @type pname: Enumerated constant
559   @param pname: Specifies a single-valued fog parameter. If the function prototype
560   ends in 'v' specifies a fog parameter.
561   @type param: Depends on function prototype.
562   @param param: Specifies the value or values to be assigned to pname. GL_FOG_COLOR 
563   requires an array of four values. All other parameters accept an array containing 
564   only a single value. 
565   """
566
567 def glFrontFace(mode):
568   """
569   Define front- and back-facing polygons
570   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/frontface.html}
571
572   @type mode: Enumerated constant
573   @param mode: Specifies the orientation of front-facing polygons.
574   """
575
576 def glFrustum(left, right, bottom, top, zNear, zFar):
577   """
578   Multiply the current matrix by a perspective matrix
579   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/frustum.html}
580
581   @type left, right: double (float)
582   @param left, right: Specify the coordinates for the left and right vertical 
583   clipping planes. 
584   @type top, bottom: double (float)
585   @param top, bottom: Specify the coordinates for the bottom and top horizontal 
586   clipping planes. 
587   @type zNear, zFar: double (float)
588   @param zNear, zFar: Specify the distances to the near and far depth clipping planes. 
589   Both distances must be positive. 
590   """
591
592 def glGenLists(range):
593   """
594   Generate a contiguous set of empty display lists
595   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/genlists.html}
596
597   @type range: int
598   @param range: Specifies the number of contiguous empty display lists to be generated. 
599   """
600
601 def glGenTextures(n, textures):
602   """
603   Generate texture names
604   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gentextures.html}
605
606   @type n: int
607   @param n: Specifies the number of textures name to be generated.
608   @type textures: Buffer object I{type GL_INT}
609   @param textures: Specifies an array in which the generated textures names are stored.
610   """
611
612 def glGet (pname, param):
613   """
614   B{glGetBooleanv, glGetfloatv, glGetFloatv, glGetIntegerv}
615
616   Return the value or values of a selected parameter
617   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/get.html}
618
619   @type pname: Enumerated constant
620   @param pname: Specifies the parameter value to be returned. 
621   @type param: Depends on function prototype.
622   @param param: Returns the value or values of the specified parameter. 
623   """
624
625 def glGetClipPlane(plane, equation):
626   """
627   Return the coefficients of the specified clipping plane 
628   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getclipplane.html}
629  
630   @type plane: Enumerated constant
631   @param plane: Specifies a clipping plane. The number of clipping planes depends on the 
632   implementation, but at least six clipping planes are supported. They are identified by 
633   symbolic names of the form GL_CLIP_PLANEi where 0 < i < GL_MAX_CLIP_PLANES. 
634   @type equation:  Buffer object I{type GL_FLOAT}
635   @param equation:  Returns four float (double)-precision values that are the coefficients of the
636   plane equation of plane in eye coordinates. The initial value is (0, 0, 0, 0). 
637   """
638
639 def glGetError():
640   """
641   Return error information
642   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/geterror.html}
643   """
644
645 def glGetLight (light, pname, params):
646   """
647   B{glGetLightfv and glGetLightiv}
648
649   Return light source parameter values
650   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getlight.html}
651  
652   @type light: Enumerated constant
653   @param light: Specifies a light source. The number of possible lights depends on the 
654   implementation, but at least eight lights are supported. They are identified by symbolic 
655   names of the form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. 
656   @type pname: Enumerated constant
657   @param pname: Specifies a light source parameter for light. 
658   @type params:  Buffer object. Depends on function prototype.
659   @param params: Returns the requested data. 
660   """
661
662 def glGetMap (target, query, v):
663   """
664   B{glGetMapdv, glGetMapfv, glGetMapiv}
665
666   Return evaluator parameters
667   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getmap.html}
668
669   @type target: Enumerated constant
670   @param target: Specifies the symbolic name of a map. 
671   @type query: Enumerated constant
672   @param query: Specifies which parameter to return. 
673   @type v: Buffer object. Depends on function prototype.
674   @param v: Returns the requested data. 
675   """
676
677 def glGetMaterial (face, pname, params):
678   """
679   B{glGetMaterialfv, glGetMaterialiv}
680
681   Return material parameters
682   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getmaterial.html}
683
684   @type face: Enumerated constant
685   @param face: Specifies which of the two materials is being queried.  
686   representing the front and back materials, respectively. 
687   @type pname: Enumerated constant
688   @param pname: Specifies the material parameter to return. 
689   @type params: Buffer object. Depends on function prototype.
690   @param params: Returns the requested data. 
691   """
692
693 def glGetPixelMap (map, values):
694   """
695   B{glGetPixelMapfv, glGetPixelMapuiv, glGetPixelMapusv}
696
697   Return the specified pixel map
698   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getpixelmap.html}
699
700   @type map:  Enumerated constant
701   @param map: Specifies the name of the pixel map to return. 
702   @type values: Buffer object. Depends on function prototype.
703   @param values: Returns the pixel map contents. 
704   """
705
706 def glGetPolygonStipple(mask):
707   """
708   Return the polygon stipple pattern
709   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getpolygonstipple.html}
710
711   @type mask: Buffer object I{type GL_BYTE}
712   @param mask: Returns the stipple pattern. The initial value is all 1's.
713   """
714
715 def glGetString(name):
716   """
717   Return a string describing the current GL connection
718   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getstring.html}
719
720   @type name: Enumerated constant
721   @param name: Specifies a symbolic constant. 
722
723   """
724
725 def glGetTexEnv (target, pname, params):
726   """
727   B{glGetTexEnvfv, glGetTexEnviv}
728
729   Return texture environment parameters
730   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexenv.html}
731
732   @type target: Enumerated constant
733   @param target: Specifies a texture environment. Must be GL_TEXTURE_ENV. 
734   @type pname: Enumerated constant
735   @param pname: Specifies the symbolic name of a texture environment parameter. 
736   @type params: Buffer object. Depends on function prototype.
737   @param params: Returns the requested data. 
738   """
739
740 def glGetTexGen (coord, pname, params):
741   """
742   B{glGetTexGendv, glGetTexGenfv, glGetTexGeniv}
743  
744   Return texture coordinate generation parameters
745   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexgen.html}
746
747   @type coord: Enumerated constant
748   @param coord: Specifies a texture coordinate. 
749   @type pname: Enumerated constant
750   @param pname: Specifies the symbolic name of the value(s) to be returned. 
751   @type params: Buffer object. Depends on function prototype.
752   @param params: Returns the requested data. 
753   """
754
755 def glGetTexImage(target, level, format, type, pixels):
756   """
757   Return a texture image
758   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getteximage.html}
759
760   @type target: Enumerated constant
761   @param target: Specifies which texture is to be obtained. 
762   @type level: int
763   @param level: Specifies the level-of-detail number of the desired image. 
764   Level 0 is the base image level. Level n is the nth mipmap reduction image. 
765   @type format: Enumerated constant
766   @param format: Specifies a pixel format for the returned data. 
767   @type type: Enumerated constant
768   @param type: Specifies a pixel type for the returned data. 
769   @type pixels: Buffer object.
770   @param pixels: Returns the texture image. Should be a pointer to an array of the 
771   type specified by type
772   """
773
774 def glGetTexLevelParameter (target, level, pname, params):
775   """
776   B{glGetTexLevelParameterfv, glGetTexLevelParameteriv}
777
778   return texture parameter values for a specific level of detail 
779   @see: U{opengl.org/developers/documentation/man_pages/hardcopy/GL/html/gl/gettexlevelparameter.html}
780
781   @type target: Enumerated constant
782   @param target: Specifies the symbolic name of the target texture. 
783   @type level: int
784   @param level: Specifies the level-of-detail number of the desired image. 
785   Level 0 is the base image level. Level n is the nth mipmap reduction image. 
786   @type pname: Enumerated constant
787   @param pname: Specifies the symbolic name of a texture parameter. 
788   @type params: Buffer object. Depends on function prototype.
789   @param params: Returns the requested data.
790   """
791
792 def glGetTexParameter (target, pname, params):
793   """
794   B{glGetTexParameterfv, glGetTexParameteriv}
795
796   Return texture parameter values 
797   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexparameter.html}
798
799   @type target: Enumerated constant
800   @param target: Specifies the symbolic name of the target texture. 
801   @type pname: Enumerated constant
802   @param pname: Specifies the symbolic name the target texture. 
803   @type params: Buffer object. Depends on function prototype.
804   @param params: Returns the texture parameters.
805   """
806
807 def glHint(target, mode):
808   """
809   Specify implementation-specific hints
810   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/hint.html}
811
812   @type target: Enumerated constant
813   @param target: Specifies a symbolic constant indicating the behavior to be 
814   controlled. 
815   @type mode: Enumerated constant
816   @param mode: Specifies a symbolic constant indicating the desired behavior. 
817   """
818
819 def glIndex (c):
820   """
821   B{glIndexd, glIndexf, glIndexi, glIndexs,  glIndexdv, glIndexfv, glIndexiv, glIndexsv}
822
823   Set the current color index
824   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/index_.html}
825
826   @type c: Buffer object. Depends on function prototype.
827   @param c: Specifies a pointer to a one element array that contains the new value for
828   the current color index.
829   """
830
831 def glInitNames():
832   """
833   Initialize the name stack
834   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/initnames.html}
835   """
836
837 def glIsEnabled(cap):
838   """
839   Test whether a capability is enabled
840   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/isenabled.html}
841
842   @type cap: Enumerated constant
843   @param cap: Specifies a constant representing a GL capability.
844   """
845
846 def glIsList(list):
847   """
848   Determine if a name corresponds to a display-list
849   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/islist.html}
850
851   @type list: unsigned int
852   @param list: Specifies a potential display-list name.
853   """
854
855 def glIsTexture(texture):
856   """
857   Determine if a name corresponds to a texture
858   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/istexture.html}
859
860   @type texture: unsigned int
861   @param texture: Specifies a value that may be the name of a texture.
862   """
863
864 def glLight (light, pname, param):
865   """
866   B{glLightf,glLighti, glLightfv, glLightiv}
867
868   Set the light source parameters
869   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/light.html}
870
871   @type light: Enumerated constant
872   @param light: Specifies a light. The number of lights depends on the implementation, 
873   but at least eight lights are supported. They are identified by symbolic names of the 
874   form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. 
875   @type pname: Enumerated constant
876   @param pname: Specifies a single-valued light source parameter for light. 
877   @type param: Depends on function prototype.
878   @param param: Specifies the value that parameter pname of light source light will be set to.  
879   If function prototype ends in 'v' specifies a pointer to the value or values that 
880   parameter pname of light source light will be set to. 
881   """
882
883 def glLightModel (pname, param):
884   """
885   B{glLightModelf, glLightModeli, glLightModelfv, glLightModeliv}
886
887   Set the lighting model parameters
888   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/lightmodel.html}
889
890   @type pname:  Enumerated constant
891   @param pname: Specifies a single-value light model parameter. 
892   @type param: Depends on function prototype.
893   @param param: Specifies the value that param will be set to. If function prototype ends in 'v'
894   specifies a pointer to the value or values that param will be set to.
895   """
896
897 def glLineStipple(factor, pattern):
898   """
899   Specify the line stipple pattern
900   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/linestipple.html}
901
902   @type factor: int
903   @param factor: Specifies a multiplier for each bit in the line stipple pattern. 
904   If factor is 3, for example, each bit in the pattern is used three times before 
905   the next bit in the pattern is used. factor is clamped to the range [1, 256] and 
906   defaults to 1. 
907   @type pattern: unsigned short int
908   @param pattern: Specifies a 16-bit integer whose bit pattern determines which fragments 
909   of a line will be drawn when the line is rasterized. Bit zero is used first; the default 
910   pattern is all 1's. 
911   """
912
913 def glLineWidth(width):
914   """
915   Specify the width of rasterized lines.
916   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/linewidth.html}
917
918   @type width: float
919   @param width: Specifies the width of rasterized lines. The initial value is 1. 
920   """
921
922 def glListBase(base):
923   """
924   Set the display-list base for glCallLists 
925   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/listbase.html}
926
927   @type base: unsigned int
928   @param base: Specifies an integer offset that will be added to glCallLists 
929   offsets to generate display-list names. The initial value is 0.
930   """
931
932 def glLoadIdentity():
933   """
934   Replace the current matrix with the identity matrix 
935   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadidentity.html}
936   """
937
938 def glLoadMatrix (m):
939   """
940   B{glLoadMatrixd, glLoadMatixf}
941
942   Replace the current matrix with the specified matrix 
943   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadmatrix.html}
944
945   @type m: Buffer object. Depends on function prototype.
946   @param m: Specifies a pointer to 16 consecutive values, which are used as the elements 
947   of a 4x4 column-major matrix. 
948   """
949
950 def glLoadName(name):
951   """
952   Load a name onto the name stack.
953   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadname.html}
954
955   @type name: unsigned int
956   @param name: Specifies a name that will replace the top value on the name stack. 
957   """
958
959 def glLogicOp(opcode):
960   """
961   Specify a logical pixel operation for color index rendering 
962   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/logicop.html}
963
964   @type opcode: Enumerated constant
965   @param opcode: Specifies a symbolic constant that selects a logical operation. 
966   """
967
968 def glMap1 (target, u1, u2, stride, order, points):
969   """
970   B{glMap1d, glMap1f}
971
972   Define a one-dimensional evaluator
973   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/map1.html}
974
975   @type target: Enumerated constant
976   @param target: Specifies the kind of values that are generated by the evaluator. 
977   @type u1, u2: Depends on function prototype.
978   @param u1,u2: Specify a linear mapping of u, as presented to glEvalCoord1, to ^, t
979   he variable that is evaluated by the equations specified by this command. 
980   @type stride: int
981   @param stride: Specifies the number of floats or float (double)s between the beginning 
982   of one control point and the beginning of the next one in the data structure 
983   referenced in points. This allows control points to be embedded in arbitrary data 
984   structures. The only constraint is that the values for a particular control point must 
985   occupy contiguous memory locations. 
986   @type order: int
987   @param order: Specifies the number of control points. Must be positive. 
988   @type points: Buffer object. Depends on function prototype.
989   @param points: Specifies a pointer to the array of control points. 
990   """
991
992 def glMap2 (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points):
993   """
994   B{glMap2d, glMap2f}
995
996   Define a two-dimensional evaluator
997   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/map2.html}
998
999   @type target: Enumerated constant
1000   @param target: Specifies the kind of values that are generated by the evaluator. 
1001   @type u1, u2: Depends on function prototype.
1002   @param u1,u2: Specify a linear mapping of u, as presented to glEvalCoord2, to ^, t
1003   he variable that is evaluated by the equations specified by this command. Initially
1004   u1 is 0 and u2 is 1.
1005   @type ustride: int
1006   @param ustride: Specifies the number of floats or float (double)s between the beginning 
1007   of control point R and the beginning of control point R ij, where i and j are the u 
1008   and v control point indices, respectively. This allows control points to be embedded 
1009   in arbitrary data structures. The only constraint is that the values for a particular 
1010   control point must occupy contiguous memory locations. The initial value of ustride is 0. 
1011   @type uorder: int
1012   @param uorder: Specifies the dimension of the control point array in the u axis. 
1013   Must be positive. The initial value is 1. 
1014   @type v1, v2: Depends on function prototype.
1015   @param v1, v2: Specify a linear mapping of v, as presented to glEvalCoord2, to ^, 
1016   one of the two variables that are evaluated by the equations specified by this command. 
1017   Initially, v1 is 0 and v2 is 1. 
1018   @type vstride: int
1019   @param vstride: Specifies the number of floats or float (double)s between the beginning of control 
1020   point R and the beginning of control point R ij, where i and j are the u and v control 
1021   point(indices, respectively. This allows control points to be embedded in arbitrary data
1022   structures. The only constraint is that the values for a particular control point must 
1023   occupy contiguous memory locations. The initial value of vstride is 0. 
1024   @type vorder: int
1025   @param vorder: Specifies the dimension of the control point array in the v axis. 
1026   Must be positive. The initial value is 1. 
1027   @type points: Buffer object. Depends on function prototype.
1028   @param points: Specifies a pointer to the array of control points. 
1029   """
1030
1031 def glMapGrid (un, u1,u2 ,vn, v1, v2):
1032   """
1033   B{glMapGrid1d, glMapGrid1f, glMapGrid2d, glMapGrid2f}
1034
1035   Define a one- or two-dimensional mesh
1036   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/mapgrid.html}
1037
1038   @type un: int
1039   @param un: Specifies the number of partitions in the grid range interval 
1040   [u1, u2]. Must be positive. 
1041   @type u1, u2: Depends on function prototype.
1042   @param u1, u2: Specify the mappings for integer grid domain values i=0 and i=un. 
1043   @type vn: int
1044   @param vn: Specifies the number of partitions in the grid range interval [v1, v2] 
1045   (glMapGrid2 only). 
1046   @type v1, v2: Depends on function prototype.
1047   @param v1, v2: Specify the mappings for integer grid domain values j=0 and j=vn 
1048   (glMapGrid2 only). 
1049   """
1050
1051 def glMaterial (face, pname, params):
1052   """
1053   Specify material parameters for the lighting model.
1054   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/material.html}
1055   
1056   @type face: Enumerated constant
1057   @param face: Specifies which face or faces are being updated. Must be one of:
1058   @type pname: Enumerated constant
1059   @param pname: Specifies the single-valued material parameter of the face 
1060   or faces that is being updated. Must be GL_SHININESS. 
1061   @type params: int
1062   @param params: Specifies the value that parameter GL_SHININESS will be set to. 
1063   If function prototype ends in 'v' specifies a pointer to the value or values that 
1064   pname will be set to. 
1065   """
1066
1067 def glMatrixMode(mode):
1068   """
1069   Specify which matrix is the current matrix.
1070   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/matrixmode.html}
1071
1072   @type mode: Enumerated constant
1073   @param mode: Specifies which matrix stack is the target for subsequent matrix operations. 
1074   """
1075
1076 def glMultMatrix (m):
1077   """
1078   B{glMultMatrixd, glMultMatrixf}
1079
1080   Multiply the current matrix with the specified matrix
1081   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/multmatrix.html}
1082
1083   @type m: Buffer object. Depends on function prototype.
1084   @param m: Points to 16 consecutive values that are used as the elements of a 4x4 column
1085   major matrix.
1086   """
1087
1088 def glNewList(list, mode):
1089   """
1090   Create or replace a display list
1091   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/newlist.html}
1092   
1093   @type list: unsigned int
1094   @param list: Specifies the display list name
1095   @type mode: Enumerated constant
1096   @param mode: Specifies the compilation mode.
1097   """
1098
1099 def glNormal3 (nx, ny, nz, v):
1100   """
1101   B{Normal3b, Normal3bv, Normal3d, Normal3dv, Normal3f, Normal3fv, Normal3i, Normal3iv,
1102   Normal3s, Normal3sv}
1103
1104   Set the current normal vector
1105   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/normal.html}
1106   
1107   @type nx, ny, nz: Depends on function prototype. (non - 'v' prototypes only)
1108   @param nx, ny, nz: Specify the x, y, and z coordinates of the new current normal. 
1109   The initial value of the current normal is the unit vector, (0, 0, 1). 
1110   @type v: Buffer object. Depends on function prototype. ('v' prototypes)
1111   @param v: Specifies a pointer to an array of three elements: the x, y, and z coordinates
1112   of the new current normal.
1113   """
1114   
1115 def glOrtho(left, right, bottom, top, zNear, zFar):
1116   """
1117   Multiply the current matrix with an orthographic matrix
1118   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/ortho.html}
1119   
1120   @type left, right: double (float)
1121   @param left, right: Specify the coordinates for the left and 
1122   right vertical clipping planes. 
1123   @type bottom, top: double (float)
1124   @param bottom, top: Specify the coordinates for the bottom and top 
1125   horizontal clipping planes. 
1126   @type zNear, zFar: double (float)
1127   @param zNear, zFar: Specify the distances to the nearer and farther 
1128   depth clipping planes. These values are negative if the plane is to be behind the viewer. 
1129   """
1130
1131 def glPassThrough(token):
1132   """
1133   Place a marker in the feedback buffer
1134   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/passthrough.html}
1135
1136   @type token: float
1137   @param token: Specifies a marker value to be placed in the feedback 
1138   buffer following a GL_PASS_THROUGH_TOKEN. 
1139   """
1140
1141 def glPixelMap (map, mapsize, values):
1142   """
1143   B{glPixelMapfv, glPixelMapuiv, glPixelMapusv}
1144
1145   Set up pixel transfer maps
1146   @see:  U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelmap.html}
1147
1148   @type map: Enumerated constant
1149   @param map: Specifies a symbolic map name.
1150   @type mapsize: int
1151   @param mapsize: Specifies the size of the map being defined. 
1152   @type values: Buffer object. Depends on function prototype.
1153   @param values: Specifies an array of mapsize values. 
1154   """
1155
1156 def glPixelStore (pname, param):
1157   """
1158   B{glPixelStoref, glPixelStorei}
1159
1160   Set pixel storage modes
1161   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelstore.html}
1162   
1163   @type pname: Enumerated constant
1164   @param pname: Specifies the symbolic name of the parameter to be set. 
1165   Six values affect the packing of pixel data into memory.
1166   Six more affect the unpacking of pixel data from memory. 
1167   @type param: Depends on function prototype.
1168   @param param: Specifies the value that pname is set to. 
1169   """
1170
1171 def glPixelTransfer (pname, param):
1172   """
1173   B{glPixelTransferf, glPixelTransferi}
1174
1175   Set pixel transfer modes
1176   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixeltransfer.html}
1177  
1178   @type pname: Enumerated constant
1179   @param pname: Specifies the symbolic name of the pixel transfer parameter to be set. 
1180   @type param: Depends on function prototype.
1181   @param param: Specifies the value that pname is set to. 
1182   """
1183
1184 def glPixelZoom(xfactor, yfactor):
1185   """
1186   Specify the pixel zoom factors
1187   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelzoom.html}
1188   
1189   @type xfactor, yfactor: float
1190   @param xfactor, yfactor: Specify the x and y zoom factors for pixel write operations.
1191   """
1192
1193 def glPointSize(size):
1194   """
1195   Specify the diameter of rasterized points
1196   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pointsize.html}
1197   
1198   @type size: float
1199   @param size: Specifies the diameter of rasterized points. The initial value is 1.
1200   """
1201
1202 def glPolygonMode(face, mode):
1203   """
1204   Select a polygon rasterization mode
1205   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonmode.html}
1206  
1207   @type face: Enumerated constant
1208   @param face: Specifies the polygons that mode applies to. 
1209   Must be GL_FRONT for front-facing polygons, GL_BACK for back- facing polygons, 
1210   or GL_FRONT_AND_BACK for front- and back-facing polygons. 
1211   @type mode: Enumerated constant
1212   @param mode: Specifies how polygons will be rasterized. 
1213   The initial value is GL_FILL for both front- and back- facing polygons. 
1214   """
1215
1216 def glPolygonOffset(factor, units):
1217   """
1218   Set the scale and units used to calculate depth values
1219   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonoffset.html}
1220   
1221   @type factor: float
1222   @param factor: Specifies a scale factor that is used to create a variable depth 
1223   offset for each polygon. The initial value is 0. 
1224   @type units:  float
1225   @param units: Is multiplied by an implementation-specific value to create a constant
1226   depth offset. The initial value is 0. 
1227   """
1228
1229 def glPolygonStipple(mask):
1230   """
1231   Set the polygon stippling pattern
1232   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonstipple.html}
1233   
1234   @type mask: Buffer object I{type GL_BYTE}
1235   @param mask: Specifies a pointer to a 32x32 stipple pattern that will be unpacked 
1236   from memory in the same way that glDrawPixels unpacks pixels. 
1237   """
1238
1239 def glPopAttrib():
1240   """
1241   Pop the server attribute stack
1242   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushattrib.html}
1243   """
1244
1245 def glPopClientAttrib():
1246   """
1247   Pop the client attribute stack
1248   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushclientattrib.html}
1249   """
1250
1251 def glPopMatrix():
1252   """
1253   Pop the current matrix stack
1254   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushmatrix.html}
1255   """
1256
1257 def glPopName():
1258   """
1259   Pop the name stack
1260   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushname.html}
1261   """
1262
1263 def glPrioritizeTextures(n, textures, priorities):
1264   """
1265   Set texture residence priority
1266   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/prioritizetextures.html}
1267   
1268   @type n: int
1269   @param n:Specifies the number of textures to be prioritized. 
1270   @type textures: Buffer I{type GL_INT}
1271   @param textures: Specifies an array containing the names of the textures to be prioritized. 
1272   @type priorities: Buffer I{type GL_FLOAT}
1273   @param priorities: Specifies an array containing the texture priorities. A priority given 
1274   in an element of priorities applies to the texture named by the corresponding element of textures. 
1275   """
1276
1277 def glPushAttrib(mask):
1278   """
1279   Push the server attribute stack
1280   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushattrib.html}
1281
1282   @type mask: Enumerated constant(s)
1283   @param mask: Specifies a mask that indicates which attributes to save.
1284   """
1285
1286 def glPushClientAttrib(mask):
1287   """
1288   Push the client attribute stack
1289   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushclientattrib.html}
1290
1291   @type mask: Enumerated constant(s)
1292   @param mask: Specifies a mask that indicates which attributes to save.
1293   """
1294
1295 def glPushMatrix():
1296   """
1297   Push the current matrix stack
1298   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushmatrix.html}
1299   """
1300
1301 def glPushName(name):
1302   """
1303   Push the name stack
1304   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushname.html}
1305
1306   @type name: unsigned int
1307   @param name: Specifies a name that will be pushed onto the name stack.
1308   """
1309
1310 def glRasterPos (x,y,z,w):
1311   """
1312   B{glRasterPos2d, glRasterPos2f, glRasterPos2i, glRasterPos2s, glRasterPos3d, 
1313   glRasterPos3f, glRasterPos3i, glRasterPos3s, glRasterPos4d, glRasterPos4f, 
1314   glRasterPos4i, glRasterPos4s, glRasterPos2dv, glRasterPos2fv, glRasterPos2iv, 
1315   glRasterPos2sv, glRasterPos3dv, glRasterPos3fv, glRasterPos3iv, glRasterPos3sv, 
1316   glRasterPos4dv, glRasterPos4fv, glRasterPos4iv, glRasterPos4sv}
1317
1318   Specify the raster position for pixel operations
1319   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rasterpos.html}
1320
1321   @type x, y, z, w: Depends on function prototype. (z and w for '3' and '4' prototypes only)
1322   @param x, y, z, w: Specify the x,y,z, and w object coordinates (if present) for the 
1323   raster position.  If function prototype ends in 'v' specifies a pointer to an array of two, 
1324   three, or four elements, specifying x, y, z, and w coordinates, respectively.
1325   @note:
1326     If you are drawing to the 3d view with a Scriptlink of a space handler
1327     the zoom level of the panels will scale the glRasterPos by the view matrix.
1328     so a X of 10 will not always offset 10 pixels as you would expect.
1329
1330     To work around this get the scale value of the view matrix and use it to scale your pixel values.
1331
1332     Workaround::
1333
1334       import Blender
1335       from Blender.BGL import *
1336       xval, yval= 100, 40
1337       # Get the scale of the view matrix
1338       viewMatrix = Buffer(GL_FLOAT, 16)
1339       glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix)
1340       f = 1/viewMatrix[0]
1341       glRasterPos2f(xval*f, yval*f) # Instead of the usual glRasterPos2i(xval, yval)
1342   """
1343
1344 def glReadBuffer(mode):
1345   """
1346   Select a color buffer source for pixels.
1347   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/readbuffer.html}
1348   
1349   @type mode: Enumerated constant
1350   @param mode: Specifies a color buffer. 
1351   """
1352
1353 def glReadPixels(x, y, width, height, format, type, pixels):
1354   """
1355   Read a block of pixels from the frame buffer
1356   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/readpixels.html}
1357   
1358   @type x, y: int
1359   @param x, y:Specify the window coordinates of the first pixel that is read 
1360   from the frame buffer. This location is the lower left corner of a rectangular
1361   block of pixels. 
1362   @type width, height: int
1363   @param width, height: Specify the dimensions of the pixel rectangle. width and 
1364   height of one correspond to a single pixel. 
1365   @type format: Enumerated constant
1366   @param format: Specifies the format of the pixel data. 
1367   @type type: Enumerated constant
1368   @param type: Specifies the data type of the pixel data. 
1369   @type pixels: Buffer object
1370   @param pixels: Returns the pixel data. 
1371   """
1372
1373 def glRect (x1,y1,x2,y2,v1,v2):
1374   """
1375   B{glRectd, glRectf, glRecti, glRects, glRectdv, glRectfv, glRectiv, glRectsv}
1376
1377   Draw a rectangle
1378   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rect.html}
1379  
1380   @type x1, y1: Depends on function prototype. (for non 'v' prototypes only)
1381   @param x1, y1: Specify one vertex of a rectangle
1382   @type x2, y2: Depends on function prototype. (for non 'v' prototypes only)
1383   @param x2, y2: Specify the opposite vertex of the rectangle
1384   @type v1, v2: Depends on function prototype. (for 'v' prototypes only)
1385   @param v1, v2: Specifies a pointer to one vertex of a rectangle and the pointer
1386   to the opposite vertex of the rectangle
1387   """
1388
1389 def glRenderMode(mode):
1390   """
1391   Set rasterization mode
1392   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rendermode.html}
1393   
1394   @type mode: Enumerated constant
1395   @param mode: Specifies the rasterization mode. 
1396   """
1397
1398 def glRotate (angle, x, y, z):
1399   """
1400   B{glRotated, glRotatef}
1401
1402   Multiply the current matrix by a rotation matrix
1403   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rotate.html}
1404
1405   @type angle:  Depends on function prototype.
1406   @param angle:  Specifies the angle of rotation in degrees.
1407   @type x, y, z:  Depends on function prototype.
1408   @param x, y, z:  Specify the x, y, and z coordinates of a vector respectively.
1409   """
1410
1411 def glScale (x,y,z):
1412   """
1413   B{glScaled, glScalef}
1414
1415   Multiply the current matrix by a general scaling matrix
1416   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/scale.html}
1417
1418   @type x, y, z: Depends on function prototype.
1419   @param x, y, z: Specify scale factors along the x, y, and z axes, respectively.
1420   """
1421
1422 def glScissor(x,y,width,height):
1423   """
1424   Define the scissor box
1425   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/scissor.html}
1426  
1427   @type x, y: int
1428   @param x, y: Specify the lower left corner of the scissor box. Initially (0, 0). 
1429   @type width, height: int
1430   @param width height: Specify the width and height of the scissor box. When a 
1431   GL context is first attached to a window, width and height are set to the 
1432   dimensions of that window. 
1433   """
1434
1435 def glSelectBuffer(size, buffer):
1436   """
1437   Establish a buffer for selection mode values
1438   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/selectbuffer.html}
1439
1440   @type size: int
1441   @param size: Specifies the size of buffer
1442   @type buffer: Buffer I{type GL_INT}
1443   @param buffer: Returns the selection data
1444   """
1445
1446 def glShadeModel(mode):
1447   """
1448   Select flat or smooth shading
1449   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/shademodel.html}
1450   
1451   @type mode: Enumerated constant
1452   @param mode: Specifies a symbolic value representing a shading technique.  
1453   """
1454
1455 def glStencilFuc(func, ref, mask):
1456   """
1457   Set function and reference value for stencil testing
1458   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilfunc.html}
1459
1460   @type func: Enumerated constant
1461   @param func:Specifies the test function. 
1462   @type ref: int
1463   @param ref:Specifies the reference value for the stencil test. ref is clamped to 
1464   the range [0,2n-1], where n is the number of bitplanes in the stencil buffer. 
1465   The initial value is 0.
1466   @type mask: unsigned int
1467   @param mask:Specifies a mask that is ANDed with both the reference value and 
1468   the stored stencil value when the test is done. The initial value is all 1's. 
1469   """
1470
1471 def glStencilMask(mask):
1472   """
1473   Control the writing of individual bits in the stencil planes
1474   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilmask.html}
1475   
1476   @type mask: unsigned int
1477   @param mask: Specifies a bit mask to enable and disable writing of individual bits 
1478   in the stencil planes. Initially, the mask is all 1's. 
1479   """
1480
1481 def glStencilOp(fail, zfail, zpass):
1482   """
1483   Set stencil test actions
1484   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilop.html}
1485   
1486   @type fail: Enumerated constant
1487   @param fail: Specifies the action to take when the stencil test fails. 
1488   The initial value is GL_KEEP. 
1489   @type zfail: Enumerated constant
1490   @param zfail: Specifies the stencil action when the stencil test passes, but the 
1491   depth test fails. zfail accepts the same symbolic constants as fail. 
1492   The initial value is GL_KEEP. 
1493   @type zpass: Enumerated constant
1494   @param zpass: Specifies the stencil action when both the stencil test and the 
1495   depth test pass, or when the stencil test passes and either there is no depth 
1496   buffer or depth testing is not enabled. zpass accepts the same symbolic constants 
1497   as fail. The initial value is GL_KEEP.
1498   """
1499
1500 def glTexCoord (s,t,r,q,v): 
1501   """
1502   B{glTexCoord1d, glTexCoord1f, glTexCoord1i, glTexCoord1s, glTexCoord2d, glTexCoord2f, 
1503   glTexCoord2i, glTexCoord2s, glTexCoord3d, glTexCoord3f, glTexCoord3i, glTexCoord3s, 
1504   glTexCoord4d, glTexCoord4f, glTexCoord4i, glTexCoord4s, glTexCoord1dv, glTexCoord1fv, 
1505   glTexCoord1iv, glTexCoord1sv, glTexCoord2dv, glTexCoord2fv, glTexCoord2iv, 
1506   glTexCoord2sv, glTexCoord3dv, glTexCoord3fv, glTexCoord3iv, glTexCoord3sv, 
1507   glTexCoord4dv, glTexCoord4fv, glTexCoord4iv, glTexCoord4sv}
1508
1509   Set the current texture coordinates
1510   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texcoord.html}
1511   
1512   @type s, t, r, q: Depends on function prototype. (r and q for '3' and '4' prototypes only)
1513   @param s, t, r, q: Specify s, t, r, and q texture coordinates. Not all parameters are 
1514   present in all forms of the command. 
1515   @type v: Buffer object. Depends on function prototype. (for 'v' prototypes only)
1516   @param v: Specifies a pointer to an array of one, two, three, or four elements, 
1517   which in turn specify the s, t, r, and q texture coordinates. 
1518   """
1519
1520 def glTexEnv  (target, pname, param):
1521   """
1522   B{glTextEnvf, glTextEnvi, glTextEnvfv, glTextEnviv}
1523
1524   Set texture environment parameters
1525   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texenv.html} 
1526
1527   @type target: Enumerated constant
1528   @param target: Specifies a texture environment. Must be GL_TEXTURE_ENV.
1529   @type pname: Enumerated constant
1530   @param pname: Specifies the symbolic name of a single-valued texture environment 
1531   parameter. Must be GL_TEXTURE_ENV_MODE. 
1532   @type param: Depends on function prototype.
1533   @param param: Specifies a single symbolic constant. If function prototype ends in 'v'
1534   specifies a pointer to a parameter array that contains either a single symbolic 
1535   constant or an RGBA color
1536   """
1537
1538 def glTexGen (coord, pname, param):
1539   """
1540   B{glTexGend, glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv}
1541
1542   Control the generation of texture coordinates
1543   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texgen.html}
1544   
1545   @type coord: Enumerated constant
1546   @param coord: Specifies a texture coordinate. 
1547   @type pname: Enumerated constant
1548   @param pname: Specifies the symbolic name of the texture- coordinate generation function. 
1549   @type param: Depends on function prototype.
1550   @param param: Specifies a single-valued texture generation parameter. 
1551   If function prototype ends in 'v' specifies a pointer to an array of texture 
1552   generation parameters. If pname is GL_TEXTURE_GEN_MODE, then the array must 
1553   contain a single symbolic constant. Otherwise, params holds the coefficients 
1554   for the texture-coordinate generation function specified by pname. 
1555   """
1556
1557 def glTexImage1D(target, level, internalformat, width, border, format, type, pixels):
1558   """
1559   Specify a one-dimensional texture image
1560   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/teximage1d.html}
1561
1562   @type target: Enumerated constant
1563   @param target: Specifies the target texture. 
1564   @type level: int
1565   @param level: Specifies the level-of-detail number. Level 0 is the base image level. 
1566   Level n is the nth mipmap reduction image. 
1567   @type internalformat: int
1568   @param internalformat: Specifies the number of color components in the texture. 
1569   @type width: int
1570   @param width: Specifies the width of the texture image. Must be 2n+2(border) for 
1571   some integer n. All implementations support texture images that are at least 64 
1572   texels wide. The height of the 1D texture image is 1. 
1573   @type border: int
1574   @param border: Specifies the width of the border. Must be either 0 or 1. 
1575   @type format: Enumerated constant
1576   @param format: Specifies the format of the pixel data. 
1577   @type type: Enumerated constant
1578   @param type: Specifies the data type of the pixel data. 
1579   @type pixels: Buffer object.
1580   @param pixels: Specifies a pointer to the image data in memory. 
1581   """
1582
1583 def glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels):
1584   """
1585   Specify a two-dimensional texture image
1586   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/teximage2d.html}
1587
1588   @type target: Enumerated constant
1589   @param target: Specifies the target texture. 
1590   @type level: int
1591   @param level: Specifies the level-of-detail number. Level 0 is the base image level. 
1592   Level n is the nth mipmap reduction image. 
1593   @type internalformat: int
1594   @param internalformat: Specifies the number of color components in the texture. 
1595   @type width: int
1596   @param width: Specifies the width of the texture image. Must be 2n+2(border) for 
1597   some integer n. All implementations support texture images that are at least 64 
1598   texels wide. 
1599   @type height: int
1600   @param height: Specifies the height of the texture image. Must be 2m+2(border) for 
1601   some integer m. All implementations support texture images that are at least 64 
1602   texels high. 
1603   @type border: int
1604   @param border: Specifies the width of the border. Must be either 0 or 1. 
1605   @type format: Enumerated constant
1606   @param format: Specifies the format of the pixel data. 
1607   @type type: Enumerated constant
1608   @param type: Specifies the data type of the pixel data. 
1609   @type pixels: Buffer object.
1610   @param pixels: Specifies a pointer to the image data in memory. 
1611   """
1612
1613 def glTexParameter (target, pname, param):
1614   """
1615   B{glTexParameterf, glTexParameteri, glTexParameterfv, glTexParameteriv}
1616
1617   Set texture parameters
1618   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texparameter.html}
1619
1620   @type target: Enumerated constant
1621   @param target: Specifies the target texture.
1622   @type pname: Enumerated constant
1623   @param pname: Specifies the symbolic name of a single-valued texture parameter. 
1624   @type param: Depends on function prototype.
1625   @param param: Specifies the value of pname. If function prototype ends in 'v' specifies 
1626   a pointer to an array where the value or values of pname are stored. 
1627   """
1628
1629 def glTranslate (x, y, z):
1630   """
1631   B{glTranslatef, glTranslated}
1632
1633   Multiply the current matrix by a translation matrix
1634   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/translate.html}
1635
1636   @type x, y, z: Depends on function prototype.
1637   @param x, y, z: Specify the x, y, and z coordinates of a translation vector. 
1638   """
1639
1640 def glVertex (x,y,z,w,v):
1641   """
1642   B{glVertex2d, glVertex2f, glVertex2i, glVertex2s, glVertex3d, glVertex3f, glVertex3i, 
1643   glVertex3s, glVertex4d, glVertex4f, glVertex4i, glVertex4s, glVertex2dv, glVertex2fv, 
1644   glVertex2iv, glVertex2sv, glVertex3dv, glVertex3fv, glVertex3iv, glVertex3sv, glVertex4dv, 
1645   glVertex4fv, glVertex4iv, glVertex4sv}
1646
1647   Specify a vertex
1648   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/vertex.html}
1649   
1650   @type x, y, z, w: Depends on function prototype (z and w for '3' and '4' prototypes only)
1651   @param x, y, z, w: Specify x, y, z, and w coordinates of a vertex. Not all parameters 
1652   are present in all forms of the command. 
1653   @type v: Buffer object. Depends of function prototype (for 'v' prototypes only)
1654   @param v: Specifies a pointer to an array of two, three, or four elements. The 
1655   elements of a two-element array are x and y; of a three-element array, x, y, and z; 
1656   and of a four-element array, x, y, z, and w. 
1657   """
1658
1659 def glViewport(x,y,width,height):
1660   """
1661   Set the viewport
1662   @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/viewport.html}
1663
1664   @type x, y: int
1665   @param x, y: Specify the lower left corner of the viewport rectangle, 
1666   in pixels. The initial value is (0,0). 
1667   @type width, height: int
1668   @param width, height: Specify the width and height of the viewport. When a GL context 
1669   is first attached to a window, width and height are set to the dimensions of that window. 
1670   """
1671
1672 def gluPerspective(fovY, aspect, zNear, zFar):
1673   """
1674   Set up a perspective projection matrix.
1675   @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5577288}
1676
1677   @type fovY: double
1678   @param fovY: Specifies the field of view angle, in degrees, in the y direction.
1679   @type aspect: double
1680   @param aspect: Specifies the aspect ratio that determines the field of view in the x direction. 
1681    The aspect ratio is the ratio of x (width) to y (height).
1682   @type zNear: double
1683   @param zNear: Specifies the distance from the viewer to the near clipping plane (always positive).
1684   @type zFar: double
1685   @param zFar: Specifies the distance from the viewer to the far clipping plane (always positive).
1686   """
1687
1688 def gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz):
1689   """
1690   Define a viewing transformation
1691   @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5573042}
1692
1693   @type eyex, eyey, eyez: double
1694   @param eyex, eyey, eyez: Specifies the position of the eye point.  
1695   @type centerx, centery, centerz: double
1696   @param centerx, centery, centerz: Specifies the position of the reference point.
1697   @type upx, upy, upz: double
1698   @param upx, upy, upz: Specifies the direction of the up vector.
1699   """
1700
1701 def gluOrtho2D(left, right, bottom, top):
1702   """
1703   Define a 2-D orthographic projection matrix
1704   @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074}
1705
1706   @type left, right: double
1707   @param left, right: Specify the coordinates for the left and right vertical clipping planes.
1708   @type bottom, top: double
1709   @param bottom, top: Specify the coordinates for the bottom and top horizontal clipping planes.
1710   """
1711
1712 def gluPickMatrix(x, y, width, height, viewport):
1713   """
1714   Define a picking region
1715   @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074}
1716
1717   @type x, y: double
1718   @param x, y: Specify the center of a picking region in window coordinates.
1719   @type width, height: double
1720   @param width, height: Specify the width and height, respectively, of the picking region in window coordinates.
1721   @type viewport: Buffer object. [int]
1722   @param viewport: Specifies the current viewport.
1723   """
1724
1725 def gluProject(objx, objy, objz, modelMatrix, projMatrix, viewport, winx, winy, winz):
1726   """
1727   Map object coordinates to window coordinates.
1728   @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074}
1729   
1730   @type objx, objy, objz: double
1731   @param objx, objy, objz: Specify the object coordinates.
1732   @type modelMatrix: Buffer object. [double]
1733   @param modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call).
1734   @type projMatrix: Buffer object. [double]
1735   @param projMatrix: Specifies the current projection matrix (as from a glGetDoublev call).
1736   @type viewport: Buffer object. [int]
1737   @param viewport: Specifies the current viewport (as from a glGetIntegerv call).
1738   @type winx, winy, winz: Buffer object. [double]
1739   @param winx, winy, winz: Return the computed window coordinates. 
1740   """
1741
1742 def gluUnProject(winx, winy, winz, modelMatrix, projMatrix, viewport, objx, objy, objz):
1743   """
1744   Map object coordinates to window
1745   coordinates.
1746   @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5582204}
1747
1748   @type winx, winy, winz: double
1749   @param winx, winy, winz: Specify the window coordinates to be mapped.
1750   @type modelMatrix: Buffer object. [double]
1751   @param modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call).
1752   @type projMatrix: Buffer object. [double]
1753   @param projMatrix: Specifies the current projection matrix (as from a glGetDoublev call).
1754   @type viewport: Buffer object. [int]
1755   @param viewport: Specifies the current viewport (as from a glGetIntegerv call).
1756   @type objx, objy, objz: Buffer object. [double]
1757   @param objx, objy, objz: Return the computed object coordinates.
1758   """
1759
1760 class Buffer:
1761   """
1762   The Buffer object is simply a block of memory that is delineated and initialized by the
1763   user. Many OpenGL functions return data to a C-style pointer, however, because this
1764   is not possible in python the Buffer object can be used to this end. Wherever pointer
1765   notation is used in the OpenGL functions the Buffer object can be used in it's BGL 
1766   wrapper. In some instances the Buffer object will need to be initialized with the template 
1767   parameter, while in other instances the user will want to create just a blank buffer 
1768   which will be zeroed by default.
1769
1770   Example with Buffer::
1771     import Blender
1772     from Blender import BGL
1773     myByteBuffer = BGL.Buffer(BGL.GL_BYTE, [32,32])
1774     BGL.glGetPolygonStipple(myByteBuffer)
1775     print myByteBuffer.dimensions
1776     print myByteBuffer.list
1777     sliceBuffer = myByteBuffer[0:16]
1778     print sliceBuffer 
1779
1780   @ivar list: The contents of the Buffer.
1781   @ivar dimensions: The size of the Buffer.
1782   """
1783
1784   def __init__(type, dimensions, template = None):
1785     """
1786     This will create a new Buffer object for use with other BGL OpenGL commands.
1787     Only the type of argument to store in the buffer and the dimensions of the buffer
1788     are necessary. Buffers are zeroed by default unless a template is supplied, in 
1789     which case the buffer is initialized to the template.
1790
1791     @type type: int
1792     @param type: The format to store data in. The type should be one of 
1793     GL_BYTE, GL_SHORT, GL_INT, or GL_FLOAT.
1794     @type dimensions: An int or sequence object specifying the dimensions of the buffer.
1795     @param dimensions: If the dimensions are specified as an int a linear array will 
1796     be created for the buffer. If a sequence is passed for the dimensions, the buffer 
1797     becomes n-Dimensional, where n is equal to the number of parameters passed in the 
1798     sequence. Example: [256,2] is a two- dimensional buffer while [256,256,4] creates 
1799     a three- dimensional buffer. You can think of each additional dimension as a sub-item 
1800     of the dimension to the left. i.e. [10,2] is a 10 element array each with 2 sub-items.  
1801     [(0,0), (0,1), (1,0), (1,1), (2,0), ...] etc.
1802     @type template: A python sequence object (optional)
1803     @param template: A sequence of matching dimensions which will be used to initialize
1804     the Buffer. If a template is not passed in all fields will be initialized to 0.
1805     @rtype: Buffer object
1806     @return: The newly created buffer as a PyObject.
1807     """