Fix T60891: bgl docs still include deprecated opengl functions
[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 web can point to more
12 than enough material to teach OpenGL programming, from books to many
13 collections of tutorials.
14
15 Here is a comprehensive `list of books <https://www.khronos.org/developers/books/>`__ (non free).
16 The `arcsynthesis tutorials <https://web.archive.org/web/20150225192611/http://www.arcsynthesis.org/gltut/index.html>`__
17 is one of the best resources to learn modern OpenGL and
18 `g-truc <http://www.g-truc.net/post-opengl-samples.html#menu>`__
19 offers a set of extensive examples, including advanced features.
20
21
22 .. note::
23
24    You can use the :class:`Image` type to load and set textures.
25    See :class:`Image.gl_load` and :class:`Image.gl_load`,
26    for example.
27
28
29 .. function:: glBindTexture(target, texture):
30
31    Bind a named texture to a texturing target
32
33    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glBindTexture.xml>`__
34
35    :type target: Enumerated constant
36    :arg target: Specifies the target to which the texture is bound.
37    :type texture: unsigned int
38    :arg texture: Specifies the name of a texture.
39
40
41 .. function:: glBlendFunc(sfactor, dfactor):
42
43    Specify pixel arithmetic
44
45    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glBlendFunc.xml>`__
46
47    :type sfactor: Enumerated constant
48    :arg sfactor: Specifies how the red, green, blue, and alpha source blending factors are
49       computed.
50    :type dfactor: Enumerated constant
51    :arg dfactor: Specifies how the red, green, blue, and alpha destination
52       blending factors are computed.
53
54
55 .. function:: glClear(mask):
56
57    Clear buffers to preset values
58
59    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glClear.xml>`__
60
61    :type mask: Enumerated constant(s)
62    :arg mask: Bitwise OR of masks that indicate the buffers to be cleared.
63
64
65 .. function:: glClearColor(red, green, blue, alpha):
66
67    Specify clear values for the color buffers
68
69    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glClearColor.xml>`__
70
71    :type red, green, blue, alpha: float
72    :arg red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the
73       color buffers are cleared. The initial values are all 0.
74
75
76 .. function:: glClearDepth(depth):
77
78    Specify the clear value for the depth buffer
79
80    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glClearDepth.xml>`__
81
82    :type depth: int
83    :arg depth: Specifies the depth value used when the depth buffer is cleared.
84       The initial value is 1.
85
86
87 .. function:: glClearStencil(s):
88
89    Specify the clear value for the stencil buffer
90
91    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glClearStencil.xml>`__
92
93    :type s: int
94    :arg s: Specifies the index used when the stencil buffer is cleared. The initial value is 0.
95
96
97 .. function:: glClipPlane (plane, equation):
98
99    Specify a plane against which all geometry is clipped
100
101    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glClipPlane.xml>`__
102
103    :type plane: Enumerated constant
104    :arg plane: Specifies which clipping plane is being positioned.
105    :type equation: :class:`bgl.Buffer` object I{type GL_FLOAT}(double)
106    :arg equation: Specifies the address of an array of four double- precision
107       floating-point values. These values are interpreted as a plane equation.
108
109
110 .. function:: glColor (red, green, blue, alpha):
111
112    B{glColor3b, glColor3d, glColor3f, glColor3i, glColor3s, glColor3ub, glColor3ui, glColor3us,
113    glColor4b, glColor4d, glColor4f, glColor4i, glColor4s, glColor4ub, glColor4ui, glColor4us,
114    glColor3bv, glColor3dv, glColor3fv, glColor3iv, glColor3sv, glColor3ubv, glColor3uiv,
115    glColor3usv, glColor4bv, glColor4dv, glColor4fv, glColor4iv, glColor4sv, glColor4ubv,
116    glColor4uiv, glColor4usv}
117
118    Set a new color.
119
120    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glColor.xml>`__
121
122    :type red, green, blue, alpha: Depends on function prototype.
123    :arg red, green, blue: Specify new red, green, and blue values for the current color.
124    :arg alpha: Specifies a new alpha value for the current color. Included only in the
125       four-argument glColor4 commands. (With '4' colors only)
126
127
128 .. function:: glColorMask(red, green, blue, alpha):
129
130    Enable and disable writing of frame buffer color components
131
132    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glColorMask.xml>`__
133
134    :type red, green, blue, alpha: int (boolean)
135    :arg red, green, blue, alpha: Specify whether red, green, blue, and alpha can or cannot be
136       written into the frame buffer. The initial values are all GL_TRUE, indicating that the
137       color components can be written.
138
139
140 .. function:: glCopyTexImage2D(target, level, internalformat, x, y, width, height, border):
141
142    Copy pixels into a 2D texture image
143
144    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glCopyTexImage2D.xml>`__
145
146    :type target: Enumerated constant
147    :arg target: Specifies the target texture.
148    :type level: int
149    :arg level: Specifies the level-of-detail number. Level 0 is the base image level.
150       Level n is the nth mipmap reduction image.
151    :type internalformat: int
152    :arg internalformat: Specifies the number of color components in the texture.
153    :type width: int
154    :type x, y: int
155    :arg x, y: Specify the window coordinates of the first pixel that is copied
156       from the frame buffer. This location is the lower left corner of a rectangular
157       block of pixels.
158    :arg width: Specifies the width of the texture image. Must be 2n+2(border) for
159       some integer n. All implementations support texture images that are at least 64
160       texels wide.
161    :type height: int
162    :arg height: Specifies the height of the texture image. Must be 2m+2(border) for
163       some integer m. All implementations support texture images that are at least 64
164       texels high.
165    :type border: int
166    :arg border: Specifies the width of the border. Must be either 0 or 1.
167
168
169 .. function:: glCullFace(mode):
170
171    Specify whether front- or back-facing facets can be culled
172
173    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glCullFace.xml>`__
174
175    :type mode: Enumerated constant
176    :arg mode: Specifies whether front- or back-facing facets are candidates for culling.
177
178
179 .. function:: glDeleteTextures(n, textures):
180
181    Delete named textures
182
183    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDeleteTextures.xml>`__
184
185    :type n: int
186    :arg n: Specifies the number of textures to be deleted
187    :type textures: :class:`bgl.Buffer` I{GL_INT}
188    :arg textures: Specifies an array of textures to be deleted
189
190
191 .. function:: glDepthFunc(func):
192
193    Specify the value used for depth buffer comparisons
194
195    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDepthFunc.xml>`__
196
197    :type func: Enumerated constant
198    :arg func: Specifies the depth comparison function.
199
200
201 .. function:: glDepthMask(flag):
202
203    Enable or disable writing into the depth buffer
204
205    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDepthMask.xml>`__
206
207    :type flag: int (boolean)
208    :arg flag: Specifies whether the depth buffer is enabled for writing. If flag is GL_FALSE,
209       depth buffer writing is disabled. Otherwise, it is enabled. Initially, depth buffer
210       writing is enabled.
211
212
213 .. function:: glDepthRange(zNear, zFar):
214
215    Specify mapping of depth values from normalized device coordinates to window coordinates
216
217    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDepthRange.xml>`__
218
219    :type zNear: int
220    :arg zNear: Specifies the mapping of the near clipping plane to window coordinates.
221       The initial value is 0.
222    :type zFar: int
223    :arg zFar: Specifies the mapping of the far clipping plane to window coordinates.
224       The initial value is 1.
225
226
227 .. function:: glDisable(cap):
228
229    Disable server-side GL capabilities
230
231    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glEnable.xml>`__
232
233    :type cap: Enumerated constant
234    :arg cap: Specifies a symbolic constant indicating a GL capability.
235
236
237 .. function:: glDrawBuffer(mode):
238
239    Specify which color buffers are to be drawn into
240
241    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDrawBuffer.xml>`__
242
243    :type mode: Enumerated constant
244    :arg mode: Specifies up to four color buffers to be drawn into.
245
246
247 .. function:: glEdgeFlag (flag):
248
249    B{glEdgeFlag, glEdgeFlagv}
250
251    Flag edges as either boundary or non-boundary
252
253    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glEdgeFlag.xml>`__
254
255    :type flag: Depends of function prototype
256    :arg flag: Specifies the current edge flag value.The initial value is GL_TRUE.
257
258
259 .. function:: glEnable(cap):
260
261    Enable server-side GL capabilities
262
263    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glEnable.xml>`__
264
265    :type cap: Enumerated constant
266    :arg cap: Specifies a symbolic constant indicating a GL capability.
267
268
269 .. function:: glEvalCoord (u,v):
270
271    B{glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv,
272    glEvalCoord2dv, glEvalCoord2fv}
273
274    Evaluate enabled one- and two-dimensional maps
275
276    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glEvalCoord.xml>`__
277
278    :type u: Depends on function prototype.
279    :arg u: Specifies a value that is the domain coordinate u to the basis function defined
280       in a previous glMap1 or glMap2 command. If the function prototype ends in 'v' then
281       u specifies a pointer to an array containing either one or two domain coordinates. The first
282       coordinate is u. The second coordinate is v, which is present only in glEvalCoord2 versions.
283    :type v: Depends on function prototype. (only with '2' prototypes)
284    :arg v: Specifies a value that is the domain coordinate v to the basis function defined
285       in a previous glMap2 command. This argument is not present in a glEvalCoord1 command.
286
287
288 .. function:: glEvalMesh (mode, i1, i2):
289
290    B{glEvalMesh1 or glEvalMesh2}
291
292    Compute a one- or two-dimensional grid of points or lines
293
294    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glEvalMesh.xml>`__
295
296    :type mode: Enumerated constant
297    :arg mode: In glEvalMesh1, specifies whether to compute a one-dimensional
298       mesh of points or lines.
299    :type i1, i2: int
300    :arg i1, i2: Specify the first and last integer values for the grid domain variable i.
301
302
303 .. function:: glEvalPoint (i, j):
304
305    B{glEvalPoint1 and glEvalPoint2}
306
307    Generate and evaluate a single point in a mesh
308
309    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glEvalPoint.xml>`__
310
311    :type i: int
312    :arg i: Specifies the integer value for grid domain variable i.
313    :type j: int (only with '2' prototypes)
314    :arg j: Specifies the integer value for grid domain variable j (glEvalPoint2 only).
315
316
317 .. function:: glFeedbackBuffer (size, type, buffer):
318
319    Controls feedback mode
320
321    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glFeedbackBuffer.xml>`__
322
323    :type size: int
324    :arg size: Specifies the maximum number of values that can be written into buffer.
325    :type type: Enumerated constant
326    :arg type: Specifies a symbolic constant that describes the information that
327       will be returned for each vertex.
328    :type buffer: :class:`bgl.Buffer` object I{GL_FLOAT}
329    :arg buffer: Returns the feedback data.
330
331
332 .. function:: glFinish():
333
334    Block until all GL execution is complete
335
336    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glFinish.xml>`__
337
338
339 .. function:: glFlush():
340
341    Force Execution of GL commands in finite time
342
343    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glFlush.xml>`__
344
345
346 .. function:: glFog (pname, param):
347
348    B{glFogf, glFogi, glFogfv, glFogiv}
349
350    Specify fog parameters
351
352    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glFog.xml>`__
353
354    :type pname: Enumerated constant
355    :arg pname: Specifies a single-valued fog parameter. If the function prototype
356       ends in 'v' specifies a fog parameter.
357    :type param: Depends on function prototype.
358    :arg param: Specifies the value or values to be assigned to pname. GL_FOG_COLOR
359       requires an array of four values. All other parameters accept an array containing
360       only a single value.
361
362
363 .. function:: glFrontFace(mode):
364
365    Define front- and back-facing polygons
366
367    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glFrontFace.xml>`__
368
369    :type mode: Enumerated constant
370    :arg mode: Specifies the orientation of front-facing polygons.
371
372
373 .. function:: glGenTextures(n, textures):
374
375    Generate texture names
376
377    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGenTextures.xml>`__
378
379    :type n: int
380    :arg n: Specifies the number of textures name to be generated.
381    :type textures: :class:`bgl.Buffer` object I{type GL_INT}
382    :arg textures: Specifies an array in which the generated textures names are stored.
383
384
385 .. function:: glGet (pname, param):
386
387    B{glGetBooleanv, glGetfloatv, glGetFloatv, glGetIntegerv}
388
389    Return the value or values of a selected parameter
390
391    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGet.xml>`__
392
393    :type pname: Enumerated constant
394    :arg pname: Specifies the parameter value to be returned.
395    :type param: Depends on function prototype.
396    :arg param: Returns the value or values of the specified parameter.
397
398
399 .. function:: glGetError():
400
401    Return error information
402
403    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetError.xml>`__
404
405
406 .. function:: glGetLight (light, pname, params):
407
408    B{glGetLightfv and glGetLightiv}
409
410    Return light source parameter values
411
412    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetLight.xml>`__
413
414    :type light: Enumerated constant
415    :arg light: Specifies a light source. The number of possible lights depends on the
416       implementation, but at least eight lights are supported. They are identified by symbolic
417       names of the form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS.
418    :type pname: Enumerated constant
419    :arg pname: Specifies a light source parameter for light.
420    :type params:  :class:`bgl.Buffer` object. Depends on function prototype.
421    :arg params: Returns the requested data.
422
423
424 .. function:: glGetMap (target, query, v):
425
426    B{glGetMapdv, glGetMapfv, glGetMapiv}
427
428    Return evaluator parameters
429
430    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetMap.xml>`_
431
432    :type target: Enumerated constant
433    :arg target: Specifies the symbolic name of a map.
434    :type query: Enumerated constant
435    :arg query: Specifies which parameter to return.
436    :type v: :class:`bgl.Buffer` object. Depends on function prototype.
437    :arg v: Returns the requested data.
438
439
440 .. function:: glGetMaterial (face, pname, params):
441
442    B{glGetMaterialfv, glGetMaterialiv}
443
444    Return material parameters
445
446    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetMaterial.xml>`__
447
448    :type face: Enumerated constant
449    :arg face: Specifies which of the two materials is being queried.
450       representing the front and back materials, respectively.
451    :type pname: Enumerated constant
452    :arg pname: Specifies the material parameter to return.
453    :type params: :class:`bgl.Buffer` object. Depends on function prototype.
454    :arg params: Returns the requested data.
455
456
457 .. function:: glGetPixelMap (map, values):
458
459    B{glGetPixelMapfv, glGetPixelMapuiv, glGetPixelMapusv}
460
461    Return the specified pixel map
462
463    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetPixelMap.xml>`__
464
465    :type map:  Enumerated constant
466    :arg map: Specifies the name of the pixel map to return.
467    :type values: :class:`bgl.Buffer` object. Depends on function prototype.
468    :arg values: Returns the pixel map contents.
469
470
471 .. function:: glGetString(name):
472
473    Return a string describing the current GL connection
474
475    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetString.xml>`__
476
477    :type name: Enumerated constant
478    :arg name: Specifies a symbolic constant.
479
480
481
482 .. function:: glGetTexEnv (target, pname, params):
483
484    B{glGetTexEnvfv, glGetTexEnviv}
485
486    Return texture environment parameters
487
488    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetTexEnv.xml>`__
489
490    :type target: Enumerated constant
491    :arg target: Specifies a texture environment. Must be GL_TEXTURE_ENV.
492    :type pname: Enumerated constant
493    :arg pname: Specifies the symbolic name of a texture environment parameter.
494    :type params: :class:`bgl.Buffer` object. Depends on function prototype.
495    :arg params: Returns the requested data.
496
497
498 .. function:: glGetTexGen (coord, pname, params):
499
500    B{glGetTexGendv, glGetTexGenfv, glGetTexGeniv}
501
502    Return texture coordinate generation parameters
503
504    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetTexGen.xml>`__
505
506    :type coord: Enumerated constant
507    :arg coord: Specifies a texture coordinate.
508    :type pname: Enumerated constant
509    :arg pname: Specifies the symbolic name of the value(s) to be returned.
510    :type params: :class:`bgl.Buffer` object. Depends on function prototype.
511    :arg params: Returns the requested data.
512
513
514 .. function:: glGetTexImage(target, level, format, type, pixels):
515
516    Return a texture image
517
518    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetTexImage.xml>`__
519
520    :type target: Enumerated constant
521    :arg target: Specifies which texture is to be obtained.
522    :type level: int
523    :arg level: Specifies the level-of-detail number of the desired image.
524       Level 0 is the base image level. Level n is the nth mipmap reduction image.
525    :type format: Enumerated constant
526    :arg format: Specifies a pixel format for the returned data.
527    :type type: Enumerated constant
528    :arg type: Specifies a pixel type for the returned data.
529    :type pixels: :class:`bgl.Buffer` object.
530    :arg pixels: Returns the texture image. Should be a pointer to an array of the
531       type specified by type
532
533
534 .. function:: glGetTexLevelParameter (target, level, pname, params):
535
536    B{glGetTexLevelParameterfv, glGetTexLevelParameteriv}
537
538    return texture parameter values for a specific level of detail
539
540    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetTexLevelParameter.xml>`__
541
542    :type target: Enumerated constant
543    :arg target: Specifies the symbolic name of the target texture.
544    :type level: int
545    :arg level: Specifies the level-of-detail number of the desired image.
546       Level 0 is the base image level. Level n is the nth mipmap reduction image.
547    :type pname: Enumerated constant
548    :arg pname: Specifies the symbolic name of a texture parameter.
549    :type params: :class:`bgl.Buffer` object. Depends on function prototype.
550    :arg params: Returns the requested data.
551
552
553 .. function:: glGetTexParameter (target, pname, params):
554
555    B{glGetTexParameterfv, glGetTexParameteriv}
556
557    Return texture parameter values
558
559    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetTexParameter.xml>`__
560
561    :type target: Enumerated constant
562    :arg target: Specifies the symbolic name of the target texture.
563    :type pname: Enumerated constant
564    :arg pname: Specifies the symbolic name the target texture.
565    :type params: :class:`bgl.Buffer` object. Depends on function prototype.
566    :arg params: Returns the texture parameters.
567
568
569 .. function:: glHint(target, mode):
570
571    Specify implementation-specific hints
572
573    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glHint.xml>`__
574
575    :type target: Enumerated constant
576    :arg target: Specifies a symbolic constant indicating the behavior to be
577       controlled.
578    :type mode: Enumerated constant
579    :arg mode: Specifies a symbolic constant indicating the desired behavior.
580
581
582 .. function:: glIsEnabled(cap):
583
584    Test whether a capability is enabled
585
586    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glIsEnabled.xml>`__
587
588    :type cap: Enumerated constant
589    :arg cap: Specifies a constant representing a GL capability.
590
591
592 .. function:: glIsTexture(texture):
593
594    Determine if a name corresponds to a texture
595
596    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glIsTexture.xml>`__
597
598    :type texture: unsigned int
599    :arg texture: Specifies a value that may be the name of a texture.
600
601
602 .. function:: glLight (light, pname, param):
603
604    B{glLightf,glLighti, glLightfv, glLightiv}
605
606    Set the light source parameters
607
608    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glLight.xml>`__
609
610    :type light: Enumerated constant
611    :arg light: Specifies a light. The number of lights depends on the implementation,
612       but at least eight lights are supported. They are identified by symbolic names of the
613       form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS.
614    :type pname: Enumerated constant
615    :arg pname: Specifies a single-valued light source parameter for light.
616    :type param: Depends on function prototype.
617    :arg param: Specifies the value that parameter pname of light source light will be set to.
618       If function prototype ends in 'v' specifies a pointer to the value or values that
619       parameter pname of light source light will be set to.
620
621
622 .. function:: glLightModel (pname, param):
623
624    B{glLightModelf, glLightModeli, glLightModelfv, glLightModeliv}
625
626    Set the lighting model parameters
627
628    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glLightModel.xml>`__
629
630    :type pname:  Enumerated constant
631    :arg pname: Specifies a single-value light model parameter.
632    :type param: Depends on function prototype.
633    :arg param: Specifies the value that param will be set to. If function prototype ends in 'v'
634       specifies a pointer to the value or values that param will be set to.
635
636
637 .. function:: glLineWidth(width):
638
639    Specify the width of rasterized lines.
640
641    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glLineWidth.xml>`__
642
643    :type width: float
644    :arg width: Specifies the width of rasterized lines. The initial value is 1.
645
646
647 .. function:: glLoadMatrix (m):
648
649    B{glLoadMatrixd, glLoadMatixf}
650
651    Replace the current matrix with the specified matrix
652
653    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glLoadMatrix.xml>`__
654
655    :type m: :class:`bgl.Buffer` object. Depends on function prototype.
656    :arg m: Specifies a pointer to 16 consecutive values, which are used as the elements
657       of a 4x4 column-major matrix.
658
659
660 .. function:: glLogicOp(opcode):
661
662    Specify a logical pixel operation for color index rendering
663
664    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glLogicOp.xml>`__
665
666    :type opcode: Enumerated constant
667    :arg opcode: Specifies a symbolic constant that selects a logical operation.
668
669
670 .. function:: glMap1 (target, u1, u2, stride, order, points):
671
672    B{glMap1d, glMap1f}
673
674    Define a one-dimensional evaluator
675
676    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glMap1.xml>`__
677
678    :type target: Enumerated constant
679    :arg target: Specifies the kind of values that are generated by the evaluator.
680    :type u1, u2: Depends on function prototype.
681    :arg u1,u2: Specify a linear mapping of u, as presented to glEvalCoord1, to ^, t
682       he variable that is evaluated by the equations specified by this command.
683    :type stride: int
684    :arg stride: Specifies the number of floats or float (double)s between the beginning
685       of one control point and the beginning of the next one in the data structure
686       referenced in points. This allows control points to be embedded in arbitrary data
687       structures. The only constraint is that the values for a particular control point must
688       occupy contiguous memory locations.
689    :type order: int
690    :arg order: Specifies the number of control points. Must be positive.
691    :type points: :class:`bgl.Buffer` object. Depends on function prototype.
692    :arg points: Specifies a pointer to the array of control points.
693
694
695 .. function:: glMap2 (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points):
696
697    B{glMap2d, glMap2f}
698
699    Define a two-dimensional evaluator
700
701    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glMap2.xml>`__
702
703    :type target: Enumerated constant
704    :arg target: Specifies the kind of values that are generated by the evaluator.
705    :type u1, u2: Depends on function prototype.
706    :arg u1,u2: Specify a linear mapping of u, as presented to glEvalCoord2, to ^, t
707       he variable that is evaluated by the equations specified by this command. Initially
708       u1 is 0 and u2 is 1.
709    :type ustride: int
710    :arg ustride: Specifies the number of floats or float (double)s between the beginning
711       of control point R and the beginning of control point R ij, where i and j are the u
712       and v control point indices, respectively. This allows control points to be embedded
713       in arbitrary data structures. The only constraint is that the values for a particular
714       control point must occupy contiguous memory locations. The initial value of ustride is 0.
715    :type uorder: int
716    :arg uorder: Specifies the dimension of the control point array in the u axis.
717       Must be positive. The initial value is 1.
718    :type v1, v2: Depends on function prototype.
719    :arg v1, v2: Specify a linear mapping of v, as presented to glEvalCoord2,
720       to ^, one of the two variables that are evaluated by the equations
721       specified by this command. Initially, v1 is 0 and v2 is 1.
722    :type vstride: int
723    :arg vstride: Specifies the number of floats or float (double)s between the
724      beginning of control point R and the beginning of control point R ij,
725      where i and j are the u and v control point(indices, respectively.
726      This allows control points to be embedded in arbitrary data structures.
727      The only constraint is that the values for a particular control point must
728      occupy contiguous memory locations. The initial value of vstride is 0.
729    :type vorder: int
730    :arg vorder: Specifies the dimension of the control point array in the v axis.
731       Must be positive. The initial value is 1.
732    :type points: :class:`bgl.Buffer` object. Depends on function prototype.
733    :arg points: Specifies a pointer to the array of control points.
734
735
736 .. function:: glMapGrid (un, u1,u2 ,vn, v1, v2):
737
738    B{glMapGrid1d, glMapGrid1f, glMapGrid2d, glMapGrid2f}
739
740    Define a one- or two-dimensional mesh
741
742    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glMapGrid.xml>`__
743
744    :type un: int
745    :arg un: Specifies the number of partitions in the grid range interval
746       [u1, u2]. Must be positive.
747    :type u1, u2: Depends on function prototype.
748    :arg u1, u2: Specify the mappings for integer grid domain values i=0 and i=un.
749    :type vn: int
750    :arg vn: Specifies the number of partitions in the grid range interval
751       [v1, v2] (glMapGrid2 only).
752    :type v1, v2: Depends on function prototype.
753    :arg v1, v2: Specify the mappings for integer grid domain values j=0 and j=vn
754       (glMapGrid2 only).
755
756
757 .. function:: glMaterial (face, pname, params):
758
759    Specify material parameters for the lighting model.
760
761    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glMaterial.xml>`__
762
763    :type face: Enumerated constant
764    :arg face: Specifies which face or faces are being updated. Must be one of:
765    :type pname: Enumerated constant
766    :arg pname: Specifies the single-valued material parameter of the face
767       or faces that is being updated. Must be GL_SHININESS.
768    :type params: int
769    :arg params: Specifies the value that parameter GL_SHININESS will be set to.
770       If function prototype ends in 'v' specifies a pointer to the value or values that
771       pname will be set to.
772
773
774 .. function:: glMultMatrix (m):
775
776    B{glMultMatrixd, glMultMatrixf}
777
778    Multiply the current matrix with the specified matrix
779
780    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glMultMatrix.xml>`__
781
782    :type m: :class:`bgl.Buffer` object. Depends on function prototype.
783    :arg m: Points to 16 consecutive values that are used as the elements of a 4x4 column
784       major matrix.
785
786
787 .. function:: glNormal3 (nx, ny, nz, v):
788
789    B{Normal3b, Normal3bv, Normal3d, Normal3dv, Normal3f, Normal3fv, Normal3i, Normal3iv,
790    Normal3s, Normal3sv}
791
792    Set the current normal vector
793
794    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glNormal.xml>`__
795
796    :type nx, ny, nz: Depends on function prototype. (non - 'v' prototypes only)
797    :arg nx, ny, nz: Specify the x, y, and z coordinates of the new current normal.
798       The initial value of the current normal is the unit vector, (0, 0, 1).
799    :type v: :class:`bgl.Buffer` object. Depends on function prototype. ('v' prototypes)
800    :arg v: Specifies a pointer to an array of three elements: the x, y, and z coordinates
801       of the new current normal.
802
803
804 .. function:: glPixelMap (map, mapsize, values):
805
806    B{glPixelMapfv, glPixelMapuiv, glPixelMapusv}
807
808    Set up pixel transfer maps
809
810    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glPixelMap.xml>`__
811
812    :type map: Enumerated constant
813    :arg map: Specifies a symbolic map name.
814    :type mapsize: int
815    :arg mapsize: Specifies the size of the map being defined.
816    :type values: :class:`bgl.Buffer` object. Depends on function prototype.
817    :arg values: Specifies an array of mapsize values.
818
819
820 .. function:: glPixelStore (pname, param):
821
822    B{glPixelStoref, glPixelStorei}
823
824    Set pixel storage modes
825
826    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glPixelStore.xml>`__
827
828    :type pname: Enumerated constant
829    :arg pname: Specifies the symbolic name of the parameter to be set.
830       Six values affect the packing of pixel data into memory.
831       Six more affect the unpacking of pixel data from memory.
832    :type param: Depends on function prototype.
833    :arg param: Specifies the value that pname is set to.
834
835
836 .. function:: glPixelTransfer (pname, param):
837
838    B{glPixelTransferf, glPixelTransferi}
839
840    Set pixel transfer modes
841
842    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glPixelTransfer.xml>`__
843
844    :type pname: Enumerated constant
845    :arg pname: Specifies the symbolic name of the pixel transfer parameter to be set.
846    :type param: Depends on function prototype.
847    :arg param: Specifies the value that pname is set to.
848
849
850 .. function:: glPointSize(size):
851
852    Specify the diameter of rasterized points
853
854    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glPointSize.xml>`__
855
856    :type size: float
857    :arg size: Specifies the diameter of rasterized points. The initial value is 1.
858
859
860 .. function:: glPolygonMode(face, mode):
861
862    Select a polygon rasterization mode
863
864    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glPolygonMode.xml>`__
865
866    :type face: Enumerated constant
867    :arg face: Specifies the polygons that mode applies to.
868       Must be GL_FRONT for front-facing polygons, GL_BACK for back- facing
869       polygons, or GL_FRONT_AND_BACK for front- and back-facing polygons.
870    :type mode: Enumerated constant
871    :arg mode: Specifies how polygons will be rasterized.
872       The initial value is GL_FILL for both front- and back- facing polygons.
873
874
875 .. function:: glPolygonOffset(factor, units):
876
877    Set the scale and units used to calculate depth values
878
879    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glPolygonOffset.xml>`__
880
881    :type factor: float
882    :arg factor: Specifies a scale factor that is used to create a variable depth
883       offset for each polygon. The initial value is 0.
884    :type units:  float
885    :arg units: Is multiplied by an implementation-specific value to create a
886       constant depth offset. The initial value is 0.
887
888
889 .. function:: glRasterPos (x,y,z,w):
890
891    B{glRasterPos2d, glRasterPos2f, glRasterPos2i, glRasterPos2s, glRasterPos3d,
892    glRasterPos3f, glRasterPos3i, glRasterPos3s, glRasterPos4d, glRasterPos4f,
893    glRasterPos4i, glRasterPos4s, glRasterPos2dv, glRasterPos2fv, glRasterPos2iv,
894    glRasterPos2sv, glRasterPos3dv, glRasterPos3fv, glRasterPos3iv, glRasterPos3sv,
895    glRasterPos4dv, glRasterPos4fv, glRasterPos4iv, glRasterPos4sv}
896
897    Specify the raster position for pixel operations
898
899    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glRasterPos.xml>`__
900
901    :type x, y, z, w: Depends on function prototype. (z and w for '3' and '4' prototypes only)
902    :arg x, y, z, w: Specify the x,y,z, and w object coordinates (if present) for the
903       raster position.  If function prototype ends in 'v' specifies a pointer to an array of two,
904       three, or four elements, specifying x, y, z, and w coordinates, respectively.
905
906    .. note::
907
908       If you are drawing to the 3d view with a Scriptlink of a space handler
909       the zoom level of the panels will scale the glRasterPos by the view matrix.
910       so a X of 10 will not always offset 10 pixels as you would expect.
911
912       To work around this get the scale value of the view matrix and use it to scale your pixel values.
913
914       .. code-block:: python
915
916         import bgl
917         xval, yval= 100, 40
918         # Get the scale of the view matrix
919         view_matrix = bgl.Buffer(bgl.GL_FLOAT, 16)
920         bgl.glGetFloatv(bgl.GL_MODELVIEW_MATRIX, view_matrix)
921         f = 1.0 / view_matrix[0]
922
923         # Instead of the usual glRasterPos2i(xval, yval)
924         bgl.glRasterPos2f(xval * f, yval * f)
925
926
927 .. function:: glReadBuffer(mode):
928
929    Select a color buffer source for pixels.
930
931    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glReadBuffer.xml>`__
932
933    :type mode: Enumerated constant
934    :arg mode: Specifies a color buffer.
935
936
937 .. function:: glReadPixels(x, y, width, height, format, type, pixels):
938
939    Read a block of pixels from the frame buffer
940
941    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glReadPixels.xml>`__
942
943    :type x, y: int
944    :arg x, y: Specify the window coordinates of the first pixel that is read
945       from the frame buffer. This location is the lower left corner of a rectangular
946       block of pixels.
947    :type width, height: int
948    :arg width, height: Specify the dimensions of the pixel rectangle. width and
949       height of one correspond to a single pixel.
950    :type format: Enumerated constant
951    :arg format: Specifies the format of the pixel data.
952    :type type: Enumerated constant
953    :arg type: Specifies the data type of the pixel data.
954    :type pixels: :class:`bgl.Buffer` object
955    :arg pixels: Returns the pixel data.
956
957
958 .. function:: glRect (x1,y1,x2,y2,v1,v2):
959
960    B{glRectd, glRectf, glRecti, glRects, glRectdv, glRectfv, glRectiv, glRectsv}
961
962    Draw a rectangle
963
964    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glRect.xml>`__
965
966    :type x1, y1: Depends on function prototype. (for non 'v' prototypes only)
967    :arg x1, y1: Specify one vertex of a rectangle
968    :type x2, y2: Depends on function prototype. (for non 'v' prototypes only)
969    :arg x2, y2: Specify the opposite vertex of the rectangle
970    :type v1, v2: Depends on function prototype. (for 'v' prototypes only)
971    :arg v1, v2: Specifies a pointer to one vertex of a rectangle and the pointer
972       to the opposite vertex of the rectangle
973
974
975 .. function:: glRotate (angle, x, y, z):
976
977    B{glRotated, glRotatef}
978
979    Multiply the current matrix by a rotation matrix
980
981    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glRotate.xml>`__
982
983    :type angle:  Depends on function prototype.
984    :arg angle:  Specifies the angle of rotation in degrees.
985    :type x, y, z:  Depends on function prototype.
986    :arg x, y, z:  Specify the x, y, and z coordinates of a vector respectively.
987
988
989 .. function:: glScale (x,y,z):
990
991    B{glScaled, glScalef}
992
993    Multiply the current matrix by a general scaling matrix
994
995    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glScale.xml>`__
996
997    :type x, y, z: Depends on function prototype.
998    :arg x, y, z: Specify scale factors along the x, y, and z axes, respectively.
999
1000
1001 .. function:: glScissor(x,y,width,height):
1002
1003    Define the scissor box
1004
1005    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glScissor.xml>`__
1006
1007    :type x, y: int
1008    :arg x, y: Specify the lower left corner of the scissor box. Initially (0, 0).
1009    :type width, height: int
1010    :arg width height: Specify the width and height of the scissor box. When a
1011       GL context is first attached to a window, width and height are set to the
1012       dimensions of that window.
1013
1014
1015 .. function:: glStencilFunc(func, ref, mask):
1016
1017    Set function and reference value for stencil testing
1018
1019    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man/docbook4/xhtml/glStencilFunc.xml>`__
1020
1021    :type func: Enumerated constant
1022    :arg func: Specifies the test function.
1023    :type ref: int
1024    :arg ref: Specifies the reference value for the stencil test. ref is clamped
1025       to the range [0,2n-1], where n is the number of bitplanes in the stencil
1026       buffer. The initial value is 0.
1027    :type mask: unsigned int
1028    :arg mask: Specifies a mask that is ANDed with both the reference value and
1029       the stored stencil value when the test is done. The initial value is all 1's.
1030
1031
1032 .. function:: glStencilMask(mask):
1033
1034    Control the writing of individual bits in the stencil planes
1035
1036    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glStencilMask.xml>`__
1037
1038    :type mask: unsigned int
1039    :arg mask: Specifies a bit mask to enable and disable writing of individual bits
1040       in the stencil planes. Initially, the mask is all 1's.
1041
1042
1043 .. function:: glStencilOp(fail, zfail, zpass):
1044
1045    Set stencil test actions
1046
1047    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glStencilOp.xml>`__
1048
1049    :type fail: Enumerated constant
1050    :arg fail: Specifies the action to take when the stencil test fails.
1051       The initial value is GL_KEEP.
1052    :type zfail: Enumerated constant
1053    :arg zfail: Specifies the stencil action when the stencil test passes, but the
1054       depth test fails. zfail accepts the same symbolic constants as fail.
1055       The initial value is GL_KEEP.
1056    :type zpass: Enumerated constant
1057    :arg zpass: Specifies the stencil action when both the stencil test and the
1058       depth test pass, or when the stencil test passes and either there is no
1059       depth buffer or depth testing is not enabled. zpass accepts the same
1060       symbolic constants
1061       as fail. The initial value is GL_KEEP.
1062
1063
1064 .. function:: glTexCoord (s,t,r,q,v):
1065
1066    B{glTexCoord1d, glTexCoord1f, glTexCoord1i, glTexCoord1s, glTexCoord2d, glTexCoord2f,
1067    glTexCoord2i, glTexCoord2s, glTexCoord3d, glTexCoord3f, glTexCoord3i, glTexCoord3s,
1068    glTexCoord4d, glTexCoord4f, glTexCoord4i, glTexCoord4s, glTexCoord1dv, glTexCoord1fv,
1069    glTexCoord1iv, glTexCoord1sv, glTexCoord2dv, glTexCoord2fv, glTexCoord2iv,
1070    glTexCoord2sv, glTexCoord3dv, glTexCoord3fv, glTexCoord3iv, glTexCoord3sv,
1071    glTexCoord4dv, glTexCoord4fv, glTexCoord4iv, glTexCoord4sv}
1072
1073    Set the current texture coordinates
1074
1075    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glTexCoord.xml>`__
1076
1077    :type s, t, r, q: Depends on function prototype. (r and q for '3' and '4' prototypes only)
1078    :arg s, t, r, q: Specify s, t, r, and q texture coordinates. Not all parameters are
1079       present in all forms of the command.
1080    :type v: :class:`bgl.Buffer` object. Depends on function prototype. (for 'v' prototypes only)
1081    :arg v: Specifies a pointer to an array of one, two, three, or four elements,
1082       which in turn specify the s, t, r, and q texture coordinates.
1083
1084
1085 .. function:: glTexEnv  (target, pname, param):
1086
1087    B{glTextEnvf, glTextEnvi, glTextEnvfv, glTextEnviv}
1088
1089    Set texture environment parameters
1090
1091    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glTexEnv.xml>`__
1092
1093    :type target: Enumerated constant
1094    :arg target: Specifies a texture environment. Must be GL_TEXTURE_ENV.
1095    :type pname: Enumerated constant
1096    :arg pname: Specifies the symbolic name of a single-valued texture environment
1097       parameter. Must be GL_TEXTURE_ENV_MODE.
1098    :type param: Depends on function prototype.
1099    :arg param: Specifies a single symbolic constant. If function prototype ends in 'v'
1100       specifies a pointer to a parameter array that contains either a single
1101       symbolic constant or an RGBA color
1102
1103
1104 .. function:: glTexGen (coord, pname, param):
1105
1106    B{glTexGend, glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv}
1107
1108    Control the generation of texture coordinates
1109
1110    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glTexGen.xml>`__
1111
1112    :type coord: Enumerated constant
1113    :arg coord: Specifies a texture coordinate.
1114    :type pname: Enumerated constant
1115    :arg pname: Specifies the symbolic name of the texture- coordinate generation function.
1116    :type param: Depends on function prototype.
1117    :arg param: Specifies a single-valued texture generation parameter.
1118       If function prototype ends in 'v' specifies a pointer to an array of texture
1119       generation parameters. If pname is GL_TEXTURE_GEN_MODE, then the array must
1120       contain a single symbolic constant. Otherwise, params holds the coefficients
1121       for the texture-coordinate generation function specified by pname.
1122
1123
1124 .. function:: glTexImage1D(target, level, internalformat, width, border, format, type, pixels):
1125
1126    Specify a one-dimensional texture image
1127
1128    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glTexImage1D.xml>`__
1129
1130    :type target: Enumerated constant
1131    :arg target: Specifies the target texture.
1132    :type level: int
1133    :arg level: Specifies the level-of-detail number. Level 0 is the base image level.
1134       Level n is the nth mipmap reduction image.
1135    :type internalformat: int
1136    :arg internalformat: Specifies the number of color components in the texture.
1137    :type width: int
1138    :arg width: Specifies the width of the texture image. Must be 2n+2(border)
1139       for some integer n. All implementations support texture images that are
1140       at least 64 texels wide. The height of the 1D texture image is 1.
1141    :type border: int
1142    :arg border: Specifies the width of the border. Must be either 0 or 1.
1143    :type format: Enumerated constant
1144    :arg format: Specifies the format of the pixel data.
1145    :type type: Enumerated constant
1146    :arg type: Specifies the data type of the pixel data.
1147    :type pixels: :class:`bgl.Buffer` object.
1148    :arg pixels: Specifies a pointer to the image data in memory.
1149
1150
1151 .. function:: glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels):
1152
1153    Specify a two-dimensional texture image
1154
1155    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glTexImage2D.xml>`__
1156
1157    :type target: Enumerated constant
1158    :arg target: Specifies the target texture.
1159    :type level: int
1160    :arg level: Specifies the level-of-detail number. Level 0 is the base image level.
1161       Level n is the nth mipmap reduction image.
1162    :type internalformat: int
1163    :arg internalformat: Specifies the number of color components in the texture.
1164    :type width: int
1165    :arg width: Specifies the width of the texture image. Must be 2n+2(border)
1166       for some integer n. All implementations support texture images that are at
1167       least 64 texels wide.
1168    :type height: int
1169    :arg height: Specifies the height of the texture image. Must be 2m+2(border) for
1170       some integer m. All implementations support texture images that are at
1171       least 64 texels high.
1172    :type border: int
1173    :arg border: Specifies the width of the border. Must be either 0 or 1.
1174    :type format: Enumerated constant
1175    :arg format: Specifies the format of the pixel data.
1176    :type type: Enumerated constant
1177    :arg type: Specifies the data type of the pixel data.
1178    :type pixels: :class:`bgl.Buffer` object.
1179    :arg pixels: Specifies a pointer to the image data in memory.
1180
1181
1182 .. function:: glTexParameter (target, pname, param):
1183
1184    B{glTexParameterf, glTexParameteri, glTexParameterfv, glTexParameteriv}
1185
1186    Set texture parameters
1187
1188    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glTexParameter.xml>`__
1189
1190    :type target: Enumerated constant
1191    :arg target: Specifies the target texture.
1192    :type pname: Enumerated constant
1193    :arg pname: Specifies the symbolic name of a single-valued texture parameter.
1194    :type param: Depends on function prototype.
1195    :arg param: Specifies the value of pname. If function prototype ends in 'v' specifies
1196       a pointer to an array where the value or values of pname are stored.
1197
1198
1199 .. function:: glTranslate (x, y, z):
1200
1201    B{glTranslatef, glTranslated}
1202
1203    Multiply the current matrix by a translation matrix
1204
1205    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glTranslate.xml>`__
1206
1207    :type x, y, z: Depends on function prototype.
1208    :arg x, y, z: Specify the x, y, and z coordinates of a translation vector.
1209
1210
1211 .. function:: glVertex (x,y,z,w,v):
1212
1213    B{glVertex2d, glVertex2f, glVertex2i, glVertex2s, glVertex3d, glVertex3f, glVertex3i,
1214    glVertex3s, glVertex4d, glVertex4f, glVertex4i, glVertex4s, glVertex2dv, glVertex2fv,
1215    glVertex2iv, glVertex2sv, glVertex3dv, glVertex3fv, glVertex3iv, glVertex3sv, glVertex4dv,
1216    glVertex4fv, glVertex4iv, glVertex4sv}
1217
1218    Specify a vertex
1219
1220    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glVertex.xml>`__
1221
1222    :type x, y, z, w: Depends on function prototype (z and w for '3' and '4' prototypes only)
1223    :arg x, y, z, w: Specify x, y, z, and w coordinates of a vertex. Not all parameters
1224       are present in all forms of the command.
1225    :type v: :class:`bgl.Buffer` object. Depends of function prototype (for 'v'
1226       prototypes only)
1227    :arg v: Specifies a pointer to an array of two, three, or four elements. The
1228       elements of a two-element array are x and y; of a three-element array,
1229       x, y, and z; and of a four-element array, x, y, z, and w.
1230
1231
1232 .. function:: glViewport(x,y,width,height):
1233
1234    Set the viewport
1235
1236    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glViewport.xml>`__
1237
1238    :type x, y: int
1239    :arg x, y: Specify the lower left corner of the viewport rectangle,
1240       in pixels. The initial value is (0,0).
1241    :type width, height: int
1242    :arg width, height: Specify the width and height of the viewport. When a GL
1243       context is first attached to a window, width and height are set to the
1244       dimensions of that window.
1245
1246
1247 .. function:: glUseProgram(program):
1248
1249    Installs a program object as part of current rendering state
1250
1251    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glUseProgram.xml>`__
1252
1253    :type program: int
1254    :arg program: Specifies the handle of the program object whose executables are to be used as part of current rendering state.
1255
1256
1257 .. function:: glValidateProgram(program):
1258
1259    Validates a program object
1260
1261    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glValidateProgram.xml>`__
1262
1263    :type program: int
1264    :arg program: Specifies the handle of the program object to be validated.
1265
1266
1267 .. function:: glLinkProgram(program):
1268
1269    Links a program object.
1270
1271    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glLinkProgram.xml>`__
1272
1273    :type program: int
1274    :arg program: Specifies the handle of the program object to be linked.
1275
1276
1277 .. function:: glActiveTexture(texture):
1278
1279    Select active texture unit.
1280
1281    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glActiveTexture.xml>`__
1282
1283    :type texture: int
1284    :arg texture: Constant in ``GL_TEXTURE0`` 0 - 8
1285
1286
1287 .. function:: glAttachShader(program, shader):
1288
1289    Attaches a shader object to a program object.
1290
1291    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glAttachShader.xml>`__
1292
1293    :type program: int
1294    :arg program: Specifies the program object to which a shader object will be attached.
1295    :type shader: int
1296    :arg shader: Specifies the shader object that is to be attached.
1297
1298
1299 .. function:: glCompileShader(shader):
1300
1301    Compiles a shader object.
1302
1303    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glCompileShader.xml>`__
1304
1305    :type shader: int
1306    :arg shader: Specifies the shader object to be compiled.
1307
1308
1309 .. function:: glCreateProgram():
1310
1311    Creates a program object
1312
1313    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glCreateProgram.xml>`__
1314
1315    :rtype: int
1316    :return: The new program or zero if an error occurs.
1317
1318
1319 .. function:: glCreateShader(shaderType):
1320
1321    Creates a shader object.
1322
1323    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glCreateShader.xml>`__
1324
1325    :type shaderType: Specifies the type of shader to be created.
1326       Must be one of ``GL_VERTEX_SHADER``,
1327       ``GL_TESS_CONTROL_SHADER``,
1328       ``GL_TESS_EVALUATION_SHADER``,
1329       ``GL_GEOMETRY_SHADER``,
1330       or ``GL_FRAGMENT_SHADER``.
1331    :arg shaderType:
1332    :rtype: int
1333    :return: 0 if an error occurs.
1334
1335
1336 .. function:: glDeleteProgram(program):
1337
1338    Deletes a program object.
1339
1340    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDeleteProgram.xml>`__
1341
1342    :type program: int
1343    :arg program: Specifies the program object to be deleted.
1344
1345
1346 .. function:: glDeleteShader(shader):
1347
1348    Deletes a shader object.
1349
1350    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDeleteShader.xml>`__
1351
1352    :type shader: int
1353    :arg shader: Specifies the shader object to be deleted.
1354
1355
1356 .. function:: glDetachShader(program, shader):
1357
1358    Detaches a shader object from a program object to which it is attached.
1359
1360    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glDetachShader.xml>`__
1361
1362    :type program: int
1363    :arg program: Specifies the program object from which to detach the shader object.
1364    :type shader: int
1365    :arg shader: pecifies the program object from which to detach the shader object.
1366
1367
1368 .. function:: glGetAttachedShaders(program, maxCount, count, shaders):
1369
1370    Returns the handles of the shader objects attached to a program object.
1371
1372    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetAttachedShaders.xml>`__
1373
1374    :type program: int
1375    :arg program: Specifies the program object to be queried.
1376    :type maxCount: int
1377    :arg maxCount: Specifies the size of the array for storing the returned object names.
1378    :type count: :class:`bgl.Buffer` int buffer.
1379    :arg count: Returns the number of names actually returned in objects.
1380    :type shaders: :class:`bgl.Buffer` int buffer.
1381    :arg shaders: Specifies an array that is used to return the names of attached shader objects.
1382
1383
1384 .. function:: glGetProgramInfoLog(program, maxLength, length, infoLog):
1385
1386    Returns the information log for a program object.
1387
1388    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetProgramInfoLog.xml>`__
1389
1390    :type program: int
1391    :arg program: Specifies the program object whose information log is to be queried.
1392    :type maxLength: int
1393    :arg maxLength: Specifies the size of the character buffer for storing the returned information log.
1394    :type length: :class:`bgl.Buffer` int buffer.
1395    :arg length: Returns the length of the string returned in **infoLog** (excluding the null terminator).
1396    :type infoLog: :class:`bgl.Buffer` char buffer.
1397    :arg infoLog: Specifies an array of characters that is used to return the information log.
1398
1399
1400 .. function:: glGetShaderInfoLog(program, maxLength, length, infoLog):
1401
1402    Returns the information log for a shader object.
1403
1404    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetShaderInfoLog.xml>`__
1405
1406    :type shader: int
1407    :arg shader: Specifies the shader object whose information log is to be queried.
1408    :type maxLength: int
1409    :arg maxLength: Specifies the size of the character buffer for storing the returned information log.
1410    :type length: :class:`bgl.Buffer` int buffer.
1411    :arg length: Returns the length of the string returned in **infoLog** (excluding the null terminator).
1412    :type infoLog: :class:`bgl.Buffer` char buffer.
1413    :arg infoLog: Specifies an array of characters that is used to return the information log.
1414
1415
1416 .. function:: glGetProgramiv(program, pname, params):
1417
1418    Returns a parameter from a program object.
1419
1420    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetProgram.xml>`__
1421
1422    :type program: int
1423    :arg program: Specifies the program object to be queried.
1424    :type pname: int
1425    :arg pname: Specifies the object parameter.
1426    :type params: :class:`bgl.Buffer` int buffer.
1427    :arg params: Returns the requested object parameter.
1428
1429
1430 .. function:: glIsShader(shader):
1431
1432    Determines if a name corresponds to a shader object.
1433
1434    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glIsShader.xml>`__
1435
1436    :type shader: int
1437    :arg shader: Specifies a potential shader object.
1438
1439
1440 .. function:: glIsProgram(program):
1441
1442    Determines if a name corresponds to a program object
1443
1444    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glIsProgram.xml>`__
1445
1446    :type program: int
1447    :arg program: Specifies a potential program object.
1448
1449
1450 .. function:: glGetShaderSource(shader, bufSize, length, source):
1451
1452    Returns the source code string from a shader object
1453
1454    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man2/xhtml/glGetShaderSource.xml>`__
1455
1456    :type shader: int
1457    :arg shader: Specifies the shader object to be queried.
1458    :type bufSize: int
1459    :arg bufSize: Specifies the size of the character buffer for storing the returned source code string.
1460    :type length: :class:`bgl.Buffer` int buffer.
1461    :arg length: Returns the length of the string returned in source (excluding the null terminator).
1462    :type source: :class:`bgl.Buffer` char.
1463    :arg source: Specifies an array of characters that is used to return the source code string.
1464
1465
1466 .. function:: glShaderSource(shader, shader_string):
1467
1468    Replaces the source code in a shader object.
1469
1470    .. seealso:: `OpenGL Docs <https://www.opengl.org/sdk/docs/man/html/glShaderSource.xhtml>`__
1471
1472    :type shader: int
1473    :arg shader: Specifies the handle of the shader object whose source code is to be replaced.
1474    :type shader_string: string
1475    :arg shader_string: The shader string.
1476
1477
1478 .. class:: Buffer
1479
1480    The Buffer object is simply a block of memory that is delineated and initialized by the
1481    user. Many OpenGL functions return data to a C-style pointer, however, because this
1482    is not possible in python the Buffer object can be used to this end. Wherever pointer
1483    notation is used in the OpenGL functions the Buffer object can be used in it's bgl
1484    wrapper. In some instances the Buffer object will need to be initialized with the template
1485    parameter, while in other instances the user will want to create just a blank buffer
1486    which will be zeroed by default.
1487
1488    .. code-block:: python
1489
1490       import bgl
1491
1492       myByteBuffer = bgl.Buffer(bgl.GL_BYTE, [32, 32])
1493       bgl.glGetPolygonStipple(myByteBuffer)
1494
1495       print(myByteBuffer.dimensions)
1496       print(myByteBuffer.to_list())
1497
1498       sliceBuffer = myByteBuffer[0:16]
1499       print(sliceBuffer)
1500
1501    .. attribute:: dimensions
1502
1503       The number of dimensions of the Buffer.
1504
1505    .. method:: to_list()
1506
1507       The contents of the Buffer as a python list.
1508
1509    .. method:: __init__(type, dimensions, template = None):
1510
1511       This will create a new Buffer object for use with other bgl OpenGL commands.
1512       Only the type of argument to store in the buffer and the dimensions of the buffer
1513       are necessary. Buffers are zeroed by default unless a template is supplied, in
1514       which case the buffer is initialized to the template.
1515
1516       :type type: int
1517       :arg type: The format to store data in. The type should be one of
1518          GL_BYTE, GL_SHORT, GL_INT, or GL_FLOAT.
1519       :type dimensions: An int or sequence object specifying the dimensions of the buffer.
1520       :arg dimensions: If the dimensions are specified as an int a linear array will
1521          be created for the buffer. If a sequence is passed for the dimensions, the buffer
1522          becomes n-Dimensional, where n is equal to the number of parameters passed in the
1523          sequence. Example: [256,2] is a two- dimensional buffer while [256,256,4] creates
1524          a three- dimensional buffer. You can think of each additional dimension as a sub-item
1525          of the dimension to the left. i.e. [10,2] is a 10 element array each with 2 sub-items.
1526          [(0,0), (0,1), (1,0), (1,1), (2,0), ...] etc.
1527       :type template: A python sequence object (optional)
1528       :arg template: A sequence of matching dimensions which will be used to initialize
1529          the Buffer. If a template is not passed in all fields will be initialized to 0.
1530       :rtype: Buffer object
1531       :return: The newly created buffer as a PyObject.