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