1gl(3)                      Erlang Module Definition                      gl(3)
2
3
4

NAME

6       gl - Erlang wrapper functions for OpenGL
7

DESCRIPTION

9       Standard OpenGL API
10
11       This  documents the functions as a brief version of the complete OpenGL
12       reference pages.
13

DATA TYPES

15       clamp() = float()
16
17       offset() = integer() >= 0
18
19       i() = integer()
20
21       f() = float()
22
23       enum() = integer() >= 0
24
25       matrix() = m12() | m16()
26
27       m12() =
28           {f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}
29
30       m16() =
31           {f(),
32            f(),
33            f(),
34            f(),
35            f(),
36            f(),
37            f(),
38            f(),
39            f(),
40            f(),
41            f(),
42            f(),
43            f(),
44            f(),
45            f(),
46            f()}
47
48       mem() = binary() | tuple()
49

EXPORTS

51       accum(Op :: enum(), Value :: f()) -> ok
52
53              The accumulation buffer is an extended-range color  buffer.  Im‐
54              ages  are not rendered into it. Rather, images rendered into one
55              of the color buffers are added to the contents of the  accumula‐
56              tion  buffer  after  rendering. Effects such as antialiasing (of
57              points, lines, and polygons), motion blur, and  depth  of  field
58              can  be  created by accumulating images generated with different
59              transformation matrices.
60
61              External documentation.
62
63       activeShaderProgram(Pipeline :: i(), Program :: i()) -> ok
64
65              gl:activeShaderProgram/2 sets the linked program named  by  Pro‐
66              gram  to  be  the active program for the program pipeline object
67              Pipeline. The active program in the active program pipeline  ob‐
68              ject  is the target of calls to gl:uniform() when no program has
69              been made current through a call to gl:useProgram/1.
70
71              External documentation.
72
73       activeTexture(Texture :: enum()) -> ok
74
75              gl:activeTexture/1 selects which texture unit subsequent texture
76              state  calls  will affect. The number of texture units an imple‐
77              mentation supports is implementation dependent, but must  be  at
78              least 80.
79
80              External documentation.
81
82       alphaFunc(Func :: enum(), Ref :: clamp()) -> ok
83
84              The  alpha test discards fragments depending on the outcome of a
85              comparison between an incoming fragment's alpha value and a con‐
86              stant  reference  value.  gl:alphaFunc/2 specifies the reference
87              value and the comparison function. The comparison  is  performed
88              only if alpha testing is enabled. By default, it is not enabled.
89              (See gl:enable/1 and gl:disable/1 of ?GL_ALPHA_TEST.)
90
91              External documentation.
92
93       areTexturesResident(Textures :: [i()]) ->
94                              {0 | 1, Residences :: [0 | 1]}
95
96              GL establishes a ``working set'' of textures that  are  resident
97              in texture memory. These textures can be bound to a texture tar‐
98              get much more efficiently than textures that are not resident.
99
100              External documentation.
101
102       arrayElement(I :: i()) -> ok
103
104              gl:arrayElement/1   commands    are    used    within    gl:'be‐
105              gin'/1/gl:'end'/0 pairs to specify vertex and attribute data for
106              point, line, and polygon primitives. If ?GL_VERTEX_ARRAY is  en‐
107              abled  when  gl:arrayElement/1  is  called,  a  single vertex is
108              drawn, using vertex and attribute data taken from location I  of
109              the enabled arrays. If ?GL_VERTEX_ARRAY is not enabled, no draw‐
110              ing occurs but the attributes corresponding to the  enabled  ar‐
111              rays are modified.
112
113              External documentation.
114
115       attachObjectARB(ContainerObj :: i(), Obj :: i()) -> ok
116
117              No documentation available.
118
119       attachShader(Program :: i(), Shader :: i()) -> ok
120
121              In  order  to  create a complete shader program, there must be a
122              way to specify the list of things that will be linked  together.
123              Program  objects  provide this mechanism. Shaders that are to be
124              linked together in a program object must first  be  attached  to
125              that  program  object. gl:attachShader/2 attaches the shader ob‐
126              ject specified by Shader to the program object specified by Pro‐
127              gram. This indicates that Shader will be included in link opera‐
128              tions that will be performed on Program.
129
130              External documentation.
131
132       'begin'(Mode :: enum()) -> ok
133
134       'end'() -> ok
135
136              gl:'begin'/1 and gl:'end'/0 delimit the vertices that  define  a
137              primitive  or a group of like primitives. gl:'begin'/1 accepts a
138              single argument that specifies in which of ten ways the vertices
139              are  interpreted.  Taking n as an integer count starting at one,
140              and N as the total number of vertices specified, the interpreta‐
141              tions are as follows:
142
143              External documentation.
144
145       beginConditionalRender(Id :: i(), Mode :: enum()) -> ok
146
147       endConditionalRender() -> ok
148
149              Conditional  rendering  is started using gl:beginConditionalRen‐
150              der/2 and ended using gl:endConditionalRender/0.  During  condi‐
151              tional   rendering,  all  vertex  array  commands,  as  well  as
152              gl:clear/1 and gl:clearBuffer() have no effect if the  (?GL_SAM‐
153              PLES_PASSED)  result  of  the query object Id is zero, or if the
154              (?GL_ANY_SAMPLES_PASSED) result is  ?GL_FALSE.  The  results  of
155              commands  setting the current vertex state, such as gl:vertexAt‐
156              trib() are undefined. If the (?GL_SAMPLES_PASSED) result is non-
157              zero or if the (?GL_ANY_SAMPLES_PASSED) result is ?GL_TRUE, such
158              commands are not discarded. The Id parameter  to  gl:beginCondi‐
159              tionalRender/2 must be the name of a query object previously re‐
160              turned from a call to gl:genQueries/1. Mode  specifies  how  the
161              results  of  the  query object are to be interpreted. If Mode is
162              ?GL_QUERY_WAIT, the GL waits for the results of the query to  be
163              available  and  then uses the results to determine if subsequent
164              rendering commands are discarded. If Mode is  ?GL_QUERY_NO_WAIT,
165              the GL may choose to unconditionally execute the subsequent ren‐
166              dering commands without waiting for the query to complete.
167
168              External documentation.
169
170       endList() -> ok
171
172              No documentation available.
173
174       beginQuery(Target :: enum(), Id :: i()) -> ok
175
176       endQuery(Target :: enum()) -> ok
177
178              gl:beginQuery/2 and gl:endQuery/1 delimit the  boundaries  of  a
179              query  object.  Query  must be a name previously returned from a
180              call to gl:genQueries/1. If a query object with name Id does not
181              yet exist it is created with the type determined by Target. Tar‐
182              get must be one of  ?GL_SAMPLES_PASSED,  ?GL_ANY_SAMPLES_PASSED,
183              ?GL_PRIMITIVES_GENERATED,          ?GL_TRANSFORM_FEEDBACK_PRIMI‐
184              TIVES_WRITTEN, or ?GL_TIME_ELAPSED. The behavior  of  the  query
185              object depends on its type and is as follows.
186
187              External documentation.
188
189       beginQueryIndexed(Target :: enum(), Index :: i(), Id :: i()) -> ok
190
191              No documentation available.
192
193       endQueryIndexed(Target :: enum(), Index :: i()) -> ok
194
195              gl:beginQueryIndexed/3   and  gl:endQueryIndexed/2  delimit  the
196              boundaries of a query object. Query must be  a  name  previously
197              returned  from a call to gl:genQueries/1. If a query object with
198              name Id does not yet exist it is created with  the  type  deter‐
199              mined  by  Target.  Target  must  be  one of ?GL_SAMPLES_PASSED,
200              ?GL_ANY_SAMPLES_PASSED,   ?GL_PRIMITIVES_GENERATED,   ?GL_TRANS‐
201              FORM_FEEDBACK_PRIMITIVES_WRITTEN,  or  ?GL_TIME_ELAPSED. The be‐
202              havior of the query object depends on its type and  is  as  fol‐
203              lows.
204
205              External documentation.
206
207       beginTransformFeedback(PrimitiveMode :: enum()) -> ok
208
209       endTransformFeedback() -> ok
210
211              Transform feedback mode captures the values of varying variables
212              written by the  vertex  shader  (or,  if  active,  the  geometry
213              shader). Transform feedback is said to be active after a call to
214              gl:beginTransformFeedback/1 until a subsequent call  to  gl:end‐
215              TransformFeedback/0. Transform feedback commands must be paired.
216
217              External documentation.
218
219       bindAttribLocation(Program :: i(), Index :: i(), Name :: string()) ->
220                             ok
221
222              gl:bindAttribLocation/3  is used to associate a user-defined at‐
223              tribute variable in the program object specified by Program with
224              a  generic  vertex attribute index. The name of the user-defined
225              attribute variable is passed as  a  null  terminated  string  in
226              Name.  The  generic  vertex  attribute index to be bound to this
227              variable is specified by Index. When Program  is  made  part  of
228              current  state, values provided via the generic vertex attribute
229              Index will modify the value of the user-defined attribute  vari‐
230              able specified by Name.
231
232              External documentation.
233
234       bindAttribLocationARB(ProgramObj :: i(),
235                             Index :: i(),
236                             Name :: string()) ->
237                                ok
238
239              No documentation available.
240
241       bindBuffer(Target :: enum(), Buffer :: i()) -> ok
242
243              gl:bindBuffer/2  binds  a  buffer object to the specified buffer
244              binding point. Calling gl:bindBuffer/2 with Target set to one of
245              the  accepted symbolic constants and Buffer set to the name of a
246              buffer object binds that buffer object name to the target. If no
247              buffer  object with name Buffer exists, one is created with that
248              name. When a buffer object is bound to a  target,  the  previous
249              binding for that target is automatically broken.
250
251              External documentation.
252
253       bindBufferBase(Target :: enum(), Index :: i(), Buffer :: i()) ->
254                         ok
255
256              gl:bindBufferBase/3  binds the buffer object Buffer to the bind‐
257              ing point at index Index of the array of  targets  specified  by
258              Target.  Each Target represents an indexed array of buffer bind‐
259              ing points, as well as a single general binding point  that  can
260              be  used by other buffer manipulation functions such as gl:bind‐
261              Buffer/2 or glMapBuffer. In addition to binding  Buffer  to  the
262              indexed  buffer  binding  target, gl:bindBufferBase/3 also binds
263              Buffer to the generic buffer binding point specified by Target.
264
265              External documentation.
266
267       bindBufferRange(Target :: enum(),
268                       Index :: i(),
269                       Buffer :: i(),
270                       Offset :: i(),
271                       Size :: i()) ->
272                          ok
273
274              gl:bindBufferRange/5 binds a range the buffer object Buffer rep‐
275              resented  by Offset and Size to the binding point at index Index
276              of the array of targets specified by Target. Each Target  repre‐
277              sents  an  indexed  array of buffer binding points, as well as a
278              single general binding point that can be used  by  other  buffer
279              manipulation  functions  such as gl:bindBuffer/2 or glMapBuffer.
280              In addition to binding a range of Buffer to the  indexed  buffer
281              binding target, gl:bindBufferRange/5 also binds the range to the
282              generic buffer binding point specified by Target.
283
284              External documentation.
285
286       bindBuffersBase(Target :: enum(), First :: i(), Buffers :: [i()]) ->
287                          ok
288
289              gl:bindBuffersBase/3 binds a set of Count buffer  objects  whose
290              names  are  given  in the array Buffers to the Count consecutive
291              binding points starting from index First of the array of targets
292              specified  by  Target.  If Buffers is ?NULL then gl:bindBuffers‐
293              Base/3 unbinds any buffers that are currently bound to the  ref‐
294              erenced  binding points. Assuming no errors are generated, it is
295              equivalent to the following pseudo-code,  which  calls  gl:bind‐
296              BufferBase/3,  with the exception that the non-indexed Target is
297              not changed by gl:bindBuffersBase/3:
298
299              External documentation.
300
301       bindBuffersRange(Target :: enum(),
302                        First :: i(),
303                        Buffers :: [i()],
304                        Offsets :: [i()],
305                        Sizes :: [i()]) ->
306                           ok
307
308              gl:bindBuffersRange/5 binds a set of Count  ranges  from  buffer
309              objects  whose names are given in the array Buffers to the Count
310              consecutive binding points starting from index First of the  ar‐
311              ray  of  targets  specified by Target. Offsets specifies the ad‐
312              dress of an array containing Count starting offsets  within  the
313              buffers,  and  Sizes  specifies the address of an array of Count
314              sizes of the ranges. If Buffers is ?NULL then Offsets and  Sizes
315              are  ignored  and gl:bindBuffersRange/5 unbinds any buffers that
316              are currently bound to the referenced binding  points.  Assuming
317              no  errors  are  generated,  it  is  equivalent to the following
318              pseudo-code, which calls gl:bindBufferRange/5, with  the  excep‐
319              tion  that  the  non-indexed  Target  is not changed by gl:bind‐
320              BuffersRange/5:
321
322              External documentation.
323
324       bindFragDataLocation(Program :: i(),
325                            Color :: i(),
326                            Name :: string()) ->
327                               ok
328
329              gl:bindFragDataLocation/3 explicitly specifies  the  binding  of
330              the  user-defined  varying  out variable Name to fragment shader
331              color number ColorNumber for program Program. If Name was  bound
332              previously,  its  assigned binding is replaced with ColorNumber.
333              Name must be a null-terminated string. ColorNumber must be  less
334              than ?GL_MAX_DRAW_BUFFERS.
335
336              External documentation.
337
338       bindFragDataLocationIndexed(Program :: i(),
339                                   ColorNumber :: i(),
340                                   Index :: i(),
341                                   Name :: string()) ->
342                                      ok
343
344              No documentation available.
345
346       bindFramebuffer(Target :: enum(), Framebuffer :: i()) -> ok
347
348              gl:bindFramebuffer/2  binds  the  framebuffer  object  with name
349              Framebuffer to the framebuffer target specified by Target.  Tar‐
350              get must be either ?GL_DRAW_FRAMEBUFFER, ?GL_READ_FRAMEBUFFER or
351              ?GL_FRAMEBUFFER.  If  a   framebuffer   object   is   bound   to
352              ?GL_DRAW_FRAMEBUFFER  or  ?GL_READ_FRAMEBUFFER,  it  becomes the
353              target for rendering or readback operations, respectively, until
354              it is deleted or another framebuffer is bound to the correspond‐
355              ing bind point. Calling gl:bindFramebuffer/2 with Target set  to
356              ?GL_FRAMEBUFFER  binds  Framebuffer  to  both  the read and draw
357              framebuffer targets. Framebuffer is the name  of  a  framebuffer
358              object  previously returned from a call to gl:genFramebuffers/1,
359              or zero to break the existing binding of a framebuffer object to
360              Target.
361
362              External documentation.
363
364       bindImageTexture(Unit, Texture, Level, Layered, Layer, Access,
365                        Format) ->
366                           ok
367
368              Types:
369
370                 Unit = Texture = Level = i()
371                 Layered = 0 | 1
372                 Layer = i()
373                 Access = Format = enum()
374
375              gl:bindImageTexture/7  binds  a  single level of a texture to an
376              image unit for the  purpose  of  reading  and  writing  it  from
377              shaders.  Unit  specifies the zero-based index of the image unit
378              to which to bind the texture level. Texture specifies  the  name
379              of an existing texture object to bind to the image unit. If Tex‐
380              ture is zero, then any existing binding to  the  image  unit  is
381              broken.  Level specifies the level of the texture to bind to the
382              image unit.
383
384              External documentation.
385
386       bindImageTextures(First :: i(), Textures :: [i()]) -> ok
387
388              gl:bindImageTextures/2 binds images from an  array  of  existing
389              texture  objects  to  a  specified  number  of consecutive image
390              units. Count specifies the number of texture objects whose names
391              are  stored  in the array Textures. That number of texture names
392              are read from the array and bound to the Count consecutive  tex‐
393              ture  units starting from First. If the name zero appears in the
394              Textures array, any existing binding to the image unit is reset.
395              Any  non-zero  entry in Textures must be the name of an existing
396              texture object. When a non-zero entry in  Textures  is  present,
397              the image at level zero is bound, the binding is considered lay‐
398              ered, with the first layer set to zero, and the image  is  bound
399              for  read-write access. The image unit format parameter is taken
400              from the internal format of the image at level zero of the  tex‐
401              ture  object.  For cube map textures, the internal format of the
402              positive X image of level zero is used.  If  Textures  is  ?NULL
403              then  it  is  as if an appropriately sized array containing only
404              zeros had been specified.
405
406              External documentation.
407
408       bindProgramARB(Target :: enum(), Program :: i()) -> ok
409
410              No documentation available.
411
412       bindProgramPipeline(Pipeline :: i()) -> ok
413
414              gl:bindProgramPipeline/1 binds a program pipeline object to  the
415              current  context.  Pipeline  must  be a name previously returned
416              from a call to gl:genProgramPipelines/1. If no program  pipeline
417              exists  with name Pipeline then a new pipeline object is created
418              with that name and initialized to the default state vector.
419
420              External documentation.
421
422       bindRenderbuffer(Target :: enum(), Renderbuffer :: i()) -> ok
423
424              gl:bindRenderbuffer/2 binds the renderbuffer  object  with  name
425              Renderbuffer  to  the  renderbuffer  target specified by Target.
426              Target must be ?GL_RENDERBUFFER. Renderbuffer is the name  of  a
427              renderbuffer  object  previously returned from a call to gl:gen‐
428              Renderbuffers/1, or zero to break the existing binding of a ren‐
429              derbuffer object to Target.
430
431              External documentation.
432
433       bindSampler(Unit :: i(), Sampler :: i()) -> ok
434
435              gl:bindSampler/2  binds  Sampler  to  the  texture unit at index
436              Unit. Sampler must be zero or the name of a sampler object  pre‐
437              viously  returned  from a call to gl:genSamplers/1. Unit must be
438              less than the value of ?GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS.
439
440              External documentation.
441
442       bindSamplers(First :: i(), Samplers :: [i()]) -> ok
443
444              gl:bindSamplers/2 binds samplers from an array of existing  sam‐
445              pler objects to a specified number of consecutive sampler units.
446              Count specifies the number of sampler objects  whose  names  are
447              stored  in  the  array Samplers. That number of sampler names is
448              read from the array and bound to the Count  consecutive  sampler
449              units starting from First.
450
451              External documentation.
452
453       bindTexture(Target :: enum(), Texture :: i()) -> ok
454
455              gl:bindTexture/2 lets you create or use a named texture. Calling
456              gl:bindTexture/2 with Target  set  to  ?GL_TEXTURE_1D,  ?GL_TEX‐
457              TURE_2D,    ?GL_TEXTURE_3D,    ?GL_TEXTURE_1D_ARRAY,    ?GL_TEX‐
458              TURE_2D_ARRAY,   ?GL_TEXTURE_RECTANGLE,    ?GL_TEXTURE_CUBE_MAP,
459              ?GL_TEXTURE_CUBE_MAP_ARRAY,     ?GL_TEXTURE_BUFFER,     ?GL_TEX‐
460              TURE_2D_MULTISAMPLE or ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY and Tex‐
461              ture  set  to the name of the new texture binds the texture name
462              to the target. When a texture is bound to a target, the previous
463              binding for that target is automatically broken.
464
465              External documentation.
466
467       bindTextureUnit(Unit :: i(), Texture :: i()) -> ok
468
469              gl:bindTextureUnit/2  binds  an  existing  texture object to the
470              texture unit numbered Unit.
471
472              External documentation.
473
474       bindTextures(First :: i(), Textures :: [i()]) -> ok
475
476              gl:bindTextures/2 binds an array of existing texture objects  to
477              a specified number of consecutive texture units. Count specifies
478              the number of texture objects whose names are stored in the  ar‐
479              ray Textures. That number of texture names are read from the ar‐
480              ray and bound to the Count consecutive  texture  units  starting
481              from  First.  The target, or type of texture is deduced from the
482              texture object and each texture is bound  to  the  corresponding
483              target of the texture unit. If the name zero appears in the Tex‐
484              tures array, any existing binding to any target of  the  texture
485              unit  is  reset and the default texture for that target is bound
486              in its place. Any non-zero entry in Textures must be the name of
487              an  existing  texture object. If Textures is ?NULL then it is as
488              if an appropriately sized array containing only zeros  had  been
489              specified.
490
491              External documentation.
492
493       bindTransformFeedback(Target :: enum(), Id :: i()) -> ok
494
495              gl:bindTransformFeedback/2  binds  the transform feedback object
496              with name Id to the current GL state. Id must be a  name  previ‐
497              ously  returned from a call to gl:genTransformFeedbacks/1. If Id
498              has not previously been bound, a new transform  feedback  object
499              with  name  Id  and initialized with the default transform state
500              vector is created.
501
502              External documentation.
503
504       bindVertexArray(Array :: i()) -> ok
505
506              gl:bindVertexArray/1 binds the vertex array object with name Ar‐
507              ray.  Array  is the name of a vertex array object previously re‐
508              turned from a call to gl:genVertexArrays/1, or zero to break the
509              existing vertex array object binding.
510
511              External documentation.
512
513       bindVertexBuffer(Bindingindex :: i(),
514                        Buffer :: i(),
515                        Offset :: i(),
516                        Stride :: i()) ->
517                           ok
518
519              gl:bindVertexBuffer/4  and gl:vertexArrayVertexBuffer/5 bind the
520              buffer named Buffer to the vertex buffer binding point whose in‐
521              dex is given by Bindingindex. gl:bindVertexBuffer/4 modifies the
522              binding of the currently  bound  vertex  array  object,  whereas
523              gl:vertexArrayVertexBuffer/5  allows the caller to specify ID of
524              the vertex array object with an argument named Vaobj, for  which
525              the  binding  should  be modified. Offset and Stride specify the
526              offset of the first element within the buffer and  the  distance
527              between  elements  within the buffer, respectively, and are both
528              measured in basic machine units. Bindingindex must be less  than
529              the  value  of ?GL_MAX_VERTEX_ATTRIB_BINDINGS. Offset and Stride
530              must be greater than or equal to zero. If Buffer is  zero,  then
531              any buffer currently bound to the specified binding point is un‐
532              bound.
533
534              External documentation.
535
536       bindVertexBuffers(First :: i(),
537                         Buffers :: [i()],
538                         Offsets :: [i()],
539                         Strides :: [i()]) ->
540                            ok
541
542              gl:bindVertexBuffers/4  and  gl:vertexArrayVertexBuffers/5  bind
543              storage  from an array of existing buffer objects to a specified
544              number of consecutive vertex buffer binding points  units  in  a
545              vertex  array object. For gl:bindVertexBuffers/4, the vertex ar‐
546              ray object is the  currently  bound  vertex  array  object.  For
547              gl:vertexArrayVertexBuffers/5,  Vaobj  is the name of the vertex
548              array object.
549
550              External documentation.
551
552       bitmap(Width, Height, Xorig, Yorig, Xmove, Ymove, Bitmap) -> ok
553
554              Types:
555
556                 Width = Height = i()
557                 Xorig = Yorig = Xmove = Ymove = f()
558                 Bitmap = offset() | mem()
559
560              A bitmap is a binary image. When drawn, the bitmap is positioned
561              relative to the current raster position, and frame buffer pixels
562              corresponding to 1's in the bitmap are written using the current
563              raster  color or index. Frame buffer pixels corresponding to 0's
564              in the bitmap are not modified.
565
566              External documentation.
567
568       blendBarrierKHR() -> ok
569
570              No documentation available.
571
572       blendColor(Red :: clamp(),
573                  Green :: clamp(),
574                  Blue :: clamp(),
575                  Alpha :: clamp()) ->
576                     ok
577
578              The ?GL_BLEND_COLOR may be used to calculate the source and des‐
579              tination  blending  factors. The color components are clamped to
580              the range [0 1] before being stored. See  gl:blendFunc/2  for  a
581              complete  description  of the blending operations. Initially the
582              ?GL_BLEND_COLOR is set to (0, 0, 0, 0).
583
584              External documentation.
585
586       blendEquation(Mode :: enum()) -> ok
587
588       blendEquationi(Buf :: i(), Mode :: enum()) -> ok
589
590              The blend equations determine how a new  pixel  (the  ''source''
591              color)  is combined with a pixel already in the framebuffer (the
592              ''destination'' color). This function sets both  the  RGB  blend
593              equation  and  the  alpha  blend  equation to a single equation.
594              gl:blendEquationi/2 specifies the blend equation  for  a  single
595              draw  buffer  whereas gl:blendEquation/1 sets the blend equation
596              for all draw buffers.
597
598              External documentation.
599
600       blendEquationSeparate(ModeRGB :: enum(), ModeAlpha :: enum()) ->
601                                ok
602
603       blendEquationSeparatei(Buf :: i(),
604                              ModeRGB :: enum(),
605                              ModeAlpha :: enum()) ->
606                                 ok
607
608              The blend equations determines how a new pixel  (the  ''source''
609              color)  is combined with a pixel already in the framebuffer (the
610              ''destination'' color). These functions specify one blend  equa‐
611              tion for the RGB-color components and one blend equation for the
612              alpha component. gl:blendEquationSeparatei/3 specifies the blend
613              equations for a single draw buffer whereas gl:blendEquationSepa‐
614              rate/2 sets the blend equations for all draw buffers.
615
616              External documentation.
617
618       blendFunc(Sfactor :: enum(), Dfactor :: enum()) -> ok
619
620              Pixels can be drawn using a function that  blends  the  incoming
621              (source)  RGBA  values  with the RGBA values that are already in
622              the frame buffer (the destination values). Blending is initially
623              disabled.   Use   gl:enable/1  and  gl:disable/1  with  argument
624              ?GL_BLEND to enable and disable blending.
625
626              External documentation.
627
628       blendFuncSeparate(SfactorRGB, DfactorRGB, SfactorAlpha,
629                         DfactorAlpha) ->
630                            ok
631
632       blendFuncSeparatei(Buf :: i(),
633                          SrcRGB :: enum(),
634                          DstRGB :: enum(),
635                          SrcAlpha :: enum(),
636                          DstAlpha :: enum()) ->
637                             ok
638
639              Pixels can be drawn using a function that  blends  the  incoming
640              (source)  RGBA  values  with the RGBA values that are already in
641              the frame buffer (the destination values). Blending is initially
642              disabled.   Use   gl:enable/1  and  gl:disable/1  with  argument
643              ?GL_BLEND to enable and disable blending.
644
645              External documentation.
646
647       blendFunci(Buf :: i(), Src :: enum(), Dst :: enum()) -> ok
648
649              No documentation available.
650
651       blitFramebuffer(SrcX0, SrcY0, SrcX1, SrcY1, DstX0, DstY0, DstX1,
652                       DstY1, Mask, Filter) ->
653                          ok
654
655              Types:
656
657                 SrcX0 = SrcY0 = SrcX1 = SrcY1 = DstX0 = DstY0 = DstX1 = DstY1
658                 = Mask = i()
659                 Filter = enum()
660
661              gl:blitFramebuffer/10 and glBlitNamedFramebuffer transfer a rec‐
662              tangle of pixel values from one region of a read framebuffer  to
663              another region of a draw framebuffer.
664
665              External documentation.
666
667       bufferData(Target :: enum(),
668                  Size :: i(),
669                  Data :: offset() | mem(),
670                  Usage :: enum()) ->
671                     ok
672
673              gl:bufferData/4  and  glNamedBufferData  create a new data store
674              for a buffer object. In case of gl:bufferData/4, the buffer  ob‐
675              ject currently bound to Target is used. For glNamedBufferData, a
676              buffer object associated with ID specified by the caller in Buf‐
677              fer will be used instead.
678
679              External documentation.
680
681       bufferPageCommitmentARB(Target :: enum(),
682                               Offset :: i(),
683                               Size :: i(),
684                               Commit :: 0 | 1) ->
685                                  ok
686
687              No documentation available.
688
689       bufferStorage(Target :: enum(),
690                     Size :: i(),
691                     Data :: offset() | mem(),
692                     Flags :: i()) ->
693                        ok
694
695              gl:bufferStorage/4  and  glNamedBufferStorage  create  a new im‐
696              mutable data store. For gl:bufferStorage/4,  the  buffer  object
697              currently  bound  to  Target  will  be initialized. For glNamed‐
698              BufferStorage, Buffer is the name of the buffer object that will
699              be  configured. The size of the data store is specified by Size.
700              If an initial data is available, its address may be supplied  in
701              Data.  Otherwise,  to  create  an uninitialized data store, Data
702              should be ?NULL.
703
704              External documentation.
705
706       bufferSubData(Target :: enum(),
707                     Offset :: i(),
708                     Size :: i(),
709                     Data :: offset() | mem()) ->
710                        ok
711
712              gl:bufferSubData/4 and glNamedBufferSubData redefine some or all
713              of the data store for the specified buffer object. Data starting
714              at byte offset Offset and extending for Size bytes is copied  to
715              the  data  store  from the memory pointed to by Data. Offset and
716              Size must define a range lying entirely within  the  buffer  ob‐
717              ject's data store.
718
719              External documentation.
720
721       callList(List :: i()) -> ok
722
723              gl:callList/1  causes the named display list to be executed. The
724              commands saved in the display list are executed in  order,  just
725              as if they were called without using a display list. If List has
726              not been defined as a display list, gl:callList/1 is ignored.
727
728              External documentation.
729
730       callLists(Lists :: [i()]) -> ok
731
732              gl:callLists/1 causes each display list in  the  list  of  names
733              passed  as Lists to be executed. As a result, the commands saved
734              in each display list are executed in order, just as if they were
735              called without using a display list. Names of display lists that
736              have not been defined are ignored.
737
738              External documentation.
739
740       checkFramebufferStatus(Target :: enum()) -> enum()
741
742              gl:checkFramebufferStatus/1  and   glCheckNamedFramebufferStatus
743              return  the  completeness  status  of  a framebuffer object when
744              treated as a read or draw framebuffer, depending on the value of
745              Target.
746
747              External documentation.
748
749       clampColor(Target :: enum(), Clamp :: enum()) -> ok
750
751              gl:clampColor/2 controls color clamping that is performed during
752              gl:readPixels/7. Target must be ?GL_CLAMP_READ_COLOR.  If  Clamp
753              is  ?GL_TRUE,  read  color  clamping  is  enabled;  if  Clamp is
754              ?GL_FALSE,  read  color  clamping  is  disabled.  If  Clamp   is
755              ?GL_FIXED_ONLY,  read  color clamping is enabled only if the se‐
756              lected read buffer has fixed point components and disabled  oth‐
757              erwise.
758
759              External documentation.
760
761       clear(Mask :: i()) -> ok
762
763              gl:clear/1 sets the bitplane area of the window to values previ‐
764              ously  selected   by   gl:clearColor/4,   gl:clearDepth/1,   and
765              gl:clearStencil/1.  Multiple color buffers can be cleared simul‐
766              taneously by selecting more than one  buffer  at  a  time  using
767              gl:drawBuffer/1.
768
769              External documentation.
770
771       clearAccum(Red :: f(), Green :: f(), Blue :: f(), Alpha :: f()) ->
772                     ok
773
774              gl:clearAccum/4 specifies the red, green, blue, and alpha values
775              used by gl:clear/1 to clear the accumulation buffer.
776
777              External documentation.
778
779       clearBufferfv(Buffer :: enum(),
780                     Drawbuffer :: i(),
781                     Value :: tuple()) ->
782                        ok
783
784       clearBufferiv(Buffer :: enum(),
785                     Drawbuffer :: i(),
786                     Value :: tuple()) ->
787                        ok
788
789       clearBufferuiv(Buffer :: enum(),
790                      Drawbuffer :: i(),
791                      Value :: tuple()) ->
792                         ok
793
794              These commands clear a specified  buffer  of  a  framebuffer  to
795              specified  value(s).  For glClearBuffer*, the framebuffer is the
796              currently bound draw framebuffer object. For  glClearNamedFrame‐
797              buffer*, Framebuffer is zero, indicating the default draw frame‐
798              buffer, or the name of a framebuffer object.
799
800              External documentation.
801
802       clearBufferData(Target, Internalformat, Format, Type, Data) -> ok
803
804              Types:
805
806                 Target = Internalformat = Format = Type = enum()
807                 Data = offset() | mem()
808
809              gl:clearBufferData/5 and  glClearNamedBufferData  fill  the  en‐
810              tirety  of  a  buffer  object's data store with data from client
811              memory.
812
813              External documentation.
814
815       clearBufferSubData(Target, Internalformat, Offset, Size, Format,
816                          Type, Data) ->
817                             ok
818
819              Types:
820
821                 Target = Internalformat = enum()
822                 Offset = Size = i()
823                 Format = Type = enum()
824                 Data = offset() | mem()
825
826              gl:clearBufferSubData/7  and  glClearNamedBufferSubData  fill  a
827              specified  region of a buffer object's data store with data from
828              client memory.
829
830              External documentation.
831
832       clearBufferfi(Buffer :: enum(),
833                     Drawbuffer :: i(),
834                     Depth :: f(),
835                     Stencil :: i()) ->
836                        ok
837
838              No documentation available.
839
840       clearColor(Red :: clamp(),
841                  Green :: clamp(),
842                  Blue :: clamp(),
843                  Alpha :: clamp()) ->
844                     ok
845
846              gl:clearColor/4 specifies the red, green, blue, and alpha values
847              used  by gl:clear/1 to clear the color buffers. Values specified
848              by gl:clearColor/4 are clamped to the range [0 1].
849
850              External documentation.
851
852       clearDepth(Depth :: clamp()) -> ok
853
854              gl:clearDepth/1 specifies the depth value used by gl:clear/1  to
855              clear  the depth buffer. Values specified by gl:clearDepth/1 are
856              clamped to the range [0 1].
857
858              External documentation.
859
860       clearDepthf(D :: f()) -> ok
861
862              No documentation available.
863
864       clearIndex(C :: f()) -> ok
865
866              gl:clearIndex/1 specifies the index used by gl:clear/1 to  clear
867              the  color  index  buffers.  C is not clamped. Rather, C is con‐
868              verted to a fixed-point value with unspecified precision to  the
869              right  of  the  binary  point. The integer part of this value is
870              then masked with 2 m-1, where m is the number of bits in a color
871              index stored in the frame buffer.
872
873              External documentation.
874
875       clearStencil(S :: i()) -> ok
876
877              gl:clearStencil/1  specifies  the  index  used  by gl:clear/1 to
878              clear the stencil buffer. S is masked with 2 m-1, where m is the
879              number of bits in the stencil buffer.
880
881              External documentation.
882
883       clearTexImage(Texture :: i(),
884                     Level :: i(),
885                     Format :: enum(),
886                     Type :: enum(),
887                     Data :: offset() | mem()) ->
888                        ok
889
890              gl:clearTexImage/5  fills  all  an  image contained in a texture
891              with an application supplied value. Texture must be the name  of
892              an  existing  texture. Further, Texture may not be the name of a
893              buffer texture, nor may its internal format be compressed.
894
895              External documentation.
896
897       clearTexSubImage(Texture, Level, Xoffset, Yoffset, Zoffset, Width,
898                        Height, Depth, Format, Type, Data) ->
899                           ok
900
901              Types:
902
903                 Texture = Level = Xoffset =  Yoffset  =  Zoffset  =  Width  =
904                 Height = Depth = i()
905                 Format = Type = enum()
906                 Data = offset() | mem()
907
908              gl:clearTexSubImage/11  fills  all or part of an image contained
909              in a texture with an application supplied value. Texture must be
910              the name of an existing texture. Further, Texture may not be the
911              name of a buffer texture, nor may its internal  format  be  com‐
912              pressed.
913
914              External documentation.
915
916       clientActiveTexture(Texture :: enum()) -> ok
917
918              gl:clientActiveTexture/1  selects  the vertex array client state
919              parameters to be modified by gl:texCoordPointer/4,  and  enabled
920              or   disabled   with   gl:enableClientState/1   or   gl:disable‐
921              ClientState/1, respectively, when called  with  a  parameter  of
922              ?GL_TEXTURE_COORD_ARRAY.
923
924              External documentation.
925
926       clientWaitSync(Sync :: i(), Flags :: i(), Timeout :: i()) ->
927                         enum()
928
929              gl:clientWaitSync/3  causes the client to block and wait for the
930              sync object specified by Sync to become  signaled.  If  Sync  is
931              signaled when gl:clientWaitSync/3 is called, gl:clientWaitSync/3
932              returns immediately, otherwise it will block and wait for up  to
933              Timeout nanoseconds for Sync to become signaled.
934
935              External documentation.
936
937       clipControl(Origin :: enum(), Depth :: enum()) -> ok
938
939              gl:clipControl/2  controls  the clipping volume behavior and the
940              clip coordinate to window coordinate transformation behavior.
941
942              External documentation.
943
944       clipPlane(Plane :: enum(), Equation :: {f(), f(), f(), f()}) -> ok
945
946              Geometry is always clipped against the boundaries of a six-plane
947              frustum  in x, y, and z. gl:clipPlane/2 allows the specification
948              of additional planes, not necessarily perpendicular to the x, y,
949              or  z  axis, against which all geometry is clipped. To determine
950              the maximum number of additional clipping planes,  call  gl:get‐
951              Integerv/1  with  argument  ?GL_MAX_CLIP_PLANES. All implementa‐
952              tions support at least six such clipping planes. Because the re‐
953              sulting clipping region is the intersection of the defined half-
954              spaces, it is always convex.
955
956              External documentation.
957
958       color3b(Red :: i(), Green :: i(), Blue :: i()) -> ok
959
960       color3bv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) -> ok
961
962       color3d(Red :: f(), Green :: f(), Blue :: f()) -> ok
963
964       color3dv(X1 :: {Red :: f(), Green :: f(), Blue :: f()}) -> ok
965
966       color3f(Red :: f(), Green :: f(), Blue :: f()) -> ok
967
968       color3fv(X1 :: {Red :: f(), Green :: f(), Blue :: f()}) -> ok
969
970       color3i(Red :: i(), Green :: i(), Blue :: i()) -> ok
971
972       color3iv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) -> ok
973
974       color3s(Red :: i(), Green :: i(), Blue :: i()) -> ok
975
976       color3sv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) -> ok
977
978       color3ub(Red :: i(), Green :: i(), Blue :: i()) -> ok
979
980       color3ubv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) -> ok
981
982       color3ui(Red :: i(), Green :: i(), Blue :: i()) -> ok
983
984       color3uiv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) -> ok
985
986       color3us(Red :: i(), Green :: i(), Blue :: i()) -> ok
987
988       color3usv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) -> ok
989
990       color4b(Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()) -> ok
991
992       color4bv(X1 ::
993                    {Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()}) ->
994                   ok
995
996       color4d(Red :: f(), Green :: f(), Blue :: f(), Alpha :: f()) -> ok
997
998       color4dv(X1 ::
999                    {Red :: f(), Green :: f(), Blue :: f(), Alpha :: f()}) ->
1000                   ok
1001
1002       color4f(Red :: f(), Green :: f(), Blue :: f(), Alpha :: f()) -> ok
1003
1004       color4fv(X1 ::
1005                    {Red :: f(), Green :: f(), Blue :: f(), Alpha :: f()}) ->
1006                   ok
1007
1008       color4i(Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()) -> ok
1009
1010       color4iv(X1 ::
1011                    {Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()}) ->
1012                   ok
1013
1014       color4s(Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()) -> ok
1015
1016       color4sv(X1 ::
1017                    {Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()}) ->
1018                   ok
1019
1020       color4ub(Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()) ->
1021                   ok
1022
1023       color4ubv(X1 ::
1024                     {Red :: i(),
1025                      Green :: i(),
1026                      Blue :: i(),
1027                      Alpha :: i()}) ->
1028                    ok
1029
1030       color4ui(Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()) ->
1031                   ok
1032
1033       color4uiv(X1 ::
1034                     {Red :: i(),
1035                      Green :: i(),
1036                      Blue :: i(),
1037                      Alpha :: i()}) ->
1038                    ok
1039
1040       color4us(Red :: i(), Green :: i(), Blue :: i(), Alpha :: i()) ->
1041                   ok
1042
1043       color4usv(X1 ::
1044                     {Red :: i(),
1045                      Green :: i(),
1046                      Blue :: i(),
1047                      Alpha :: i()}) ->
1048                    ok
1049
1050              The GL stores both a current single-valued  color  index  and  a
1051              current  four-valued RGBA color. gl:color() sets a new four-val‐
1052              ued RGBA color. gl:color() has two major  variants:  gl:color3()
1053              and  gl:color4().  gl:color3()  variants specify new red, green,
1054              and blue values explicitly and set the current  alpha  value  to
1055              1.0  (full  intensity)  implicitly. gl:color4() variants specify
1056              all four color components explicitly.
1057
1058              External documentation.
1059
1060       colorMask(Red :: 0 | 1,
1061                 Green :: 0 | 1,
1062                 Blue :: 0 | 1,
1063                 Alpha :: 0 | 1) ->
1064                    ok
1065
1066              gl:colorMask/4 and gl:colorMaski/5 specify whether the  individ‐
1067              ual  color components in the frame buffer can or cannot be writ‐
1068              ten. gl:colorMaski/5 sets the mask for a specific  draw  buffer,
1069              whereas  gl:colorMask/4  sets  the mask for all draw buffers. If
1070              Red is ?GL_FALSE, for example, no change is made to the red com‐
1071              ponent  of  any pixel in any of the color buffers, regardless of
1072              the drawing operation attempted.
1073
1074              External documentation.
1075
1076       colorMaski(Index :: i(),
1077                  R :: 0 | 1,
1078                  G :: 0 | 1,
1079                  B :: 0 | 1,
1080                  A :: 0 | 1) ->
1081                     ok
1082
1083              No documentation available.
1084
1085       colorMaterial(Face :: enum(), Mode :: enum()) -> ok
1086
1087              gl:colorMaterial/2 specifies which material parameters track the
1088              current  color. When ?GL_COLOR_MATERIAL is enabled, the material
1089              parameter or parameters specified by Mode, of  the  material  or
1090              materials  specified  by  Face,  track  the current color at all
1091              times.
1092
1093              External documentation.
1094
1095       colorPointer(Size :: i(),
1096                    Type :: enum(),
1097                    Stride :: i(),
1098                    Ptr :: offset() | mem()) ->
1099                       ok
1100
1101              gl:colorPointer/4 specifies the location and data format  of  an
1102              array  of color components to use when rendering. Size specifies
1103              the number of components per color, and must be  3  or  4.  Type
1104              specifies  the  data  type  of  each color component, and Stride
1105              specifies the byte stride from one color to the  next,  allowing
1106              vertices  and  attributes  to  be  packed into a single array or
1107              stored in separate arrays. (Single-array storage may be more ef‐
1108              ficient on some implementations; see gl:interleavedArrays/3.)
1109
1110              External documentation.
1111
1112       colorSubTable(Target, Start, Count, Format, Type, Data) -> ok
1113
1114              Types:
1115
1116                 Target = enum()
1117                 Start = Count = i()
1118                 Format = Type = enum()
1119                 Data = offset() | mem()
1120
1121              gl:colorSubTable/6  is used to respecify a contiguous portion of
1122              a color table previously defined using gl:colorTable/6. The pix‐
1123              els referenced by Data replace the portion of the existing table
1124              from indices Start to start+count-1, inclusive. This region  may
1125              not  include any entries outside the range of the color table as
1126              it was originally specified. It is not an  error  to  specify  a
1127              subtexture  with width of 0, but such a specification has no ef‐
1128              fect.
1129
1130              External documentation.
1131
1132       colorTable(Target, Internalformat, Width, Format, Type, Table) ->
1133                     ok
1134
1135              Types:
1136
1137                 Target = Internalformat = enum()
1138                 Width = i()
1139                 Format = Type = enum()
1140                 Table = offset() | mem()
1141
1142              gl:colorTable/6 may be used in two ways: to test the actual size
1143              and color resolution of a lookup table given a particular set of
1144              parameters, or to load the contents of a color lookup table. Use
1145              the targets ?GL_PROXY_* for the first case and the other targets
1146              for the second case.
1147
1148              External documentation.
1149
1150       colorTableParameterfv(Target :: enum(),
1151                             Pname :: enum(),
1152                             Params :: {f(), f(), f(), f()}) ->
1153                                ok
1154
1155       colorTableParameteriv(Target :: enum(),
1156                             Pname :: enum(),
1157                             Params :: {i(), i(), i(), i()}) ->
1158                                ok
1159
1160              gl:colorTableParameter() is used to specify  the  scale  factors
1161              and  bias terms applied to color components when they are loaded
1162              into a color table. Target indicates which color table the scale
1163              and  bias  terms  apply  to;  it must be set to ?GL_COLOR_TABLE,
1164              ?GL_POST_CONVOLUTION_COLOR_TABLE,     or      ?GL_POST_COLOR_MA‐
1165              TRIX_COLOR_TABLE.
1166
1167              External documentation.
1168
1169       compileShader(Shader :: i()) -> ok
1170
1171              gl:compileShader/1  compiles  the  source code strings that have
1172              been stored in the shader object specified by Shader.
1173
1174              External documentation.
1175
1176       compileShaderARB(ShaderObj :: i()) -> ok
1177
1178              No documentation available.
1179
1180       compileShaderIncludeARB(Shader :: i(),
1181                               Path :: [unicode:chardata()]) ->
1182                                  ok
1183
1184              No documentation available.
1185
1186       compressedTexImage1D(Target, Level, Internalformat, Width, Border,
1187                            ImageSize, Data) ->
1188                               ok
1189
1190              Types:
1191
1192                 Target = enum()
1193                 Level = i()
1194                 Internalformat = enum()
1195                 Width = Border = ImageSize = i()
1196                 Data = offset() | mem()
1197
1198              Texturing allows elements of  an  image  array  to  be  read  by
1199              shaders.
1200
1201              External documentation.
1202
1203       compressedTexImage2D(Target, Level, Internalformat, Width, Height,
1204                            Border, ImageSize, Data) ->
1205                               ok
1206
1207              Types:
1208
1209                 Target = enum()
1210                 Level = i()
1211                 Internalformat = enum()
1212                 Width = Height = Border = ImageSize = i()
1213                 Data = offset() | mem()
1214
1215              Texturing  allows  elements  of  an  image  array  to be read by
1216              shaders.
1217
1218              External documentation.
1219
1220       compressedTexImage3D(Target, Level, Internalformat, Width, Height,
1221                            Depth, Border, ImageSize, Data) ->
1222                               ok
1223
1224              Types:
1225
1226                 Target = enum()
1227                 Level = i()
1228                 Internalformat = enum()
1229                 Width = Height = Depth = Border = ImageSize = i()
1230                 Data = offset() | mem()
1231
1232              Texturing allows elements of  an  image  array  to  be  read  by
1233              shaders.
1234
1235              External documentation.
1236
1237       compressedTexSubImage1D(Target, Level, Xoffset, Width, Format,
1238                               ImageSize, Data) ->
1239                                  ok
1240
1241              Types:
1242
1243                 Target = enum()
1244                 Level = Xoffset = Width = i()
1245                 Format = enum()
1246                 ImageSize = i()
1247                 Data = offset() | mem()
1248
1249              Texturing  allows  elements  of  an  image  array  to be read by
1250              shaders.
1251
1252              External documentation.
1253
1254       compressedTexSubImage2D(Target, Level, Xoffset, Yoffset, Width,
1255                               Height, Format, ImageSize, Data) ->
1256                                  ok
1257
1258              Types:
1259
1260                 Target = enum()
1261                 Level = Xoffset = Yoffset = Width = Height = i()
1262                 Format = enum()
1263                 ImageSize = i()
1264                 Data = offset() | mem()
1265
1266              Texturing allows elements of  an  image  array  to  be  read  by
1267              shaders.
1268
1269              External documentation.
1270
1271       compressedTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset,
1272                               Width, Height, Depth, Format, ImageSize,
1273                               Data) ->
1274                                  ok
1275
1276              Types:
1277
1278                 Target = enum()
1279                 Level  = Xoffset = Yoffset = Zoffset = Width = Height = Depth
1280                 = i()
1281                 Format = enum()
1282                 ImageSize = i()
1283                 Data = offset() | mem()
1284
1285              Texturing allows elements of  an  image  array  to  be  read  by
1286              shaders.
1287
1288              External documentation.
1289
1290       compressedTextureSubImage1D(Texture, Level, Xoffset, Width,
1291                                   Format, ImageSize, Data) ->
1292                                      ok
1293
1294              Types:
1295
1296                 Texture = Level = Xoffset = Width = i()
1297                 Format = enum()
1298                 ImageSize = i()
1299                 Data = offset() | mem()
1300
1301              No documentation available.
1302
1303       compressedTextureSubImage2D(Texture, Level, Xoffset, Yoffset,
1304                                   Width, Height, Format, ImageSize,
1305                                   Data) ->
1306                                      ok
1307
1308              Types:
1309
1310                 Texture = Level = Xoffset = Yoffset = Width = Height = i()
1311                 Format = enum()
1312                 ImageSize = i()
1313                 Data = offset() | mem()
1314
1315              No documentation available.
1316
1317       compressedTextureSubImage3D(Texture, Level, Xoffset, Yoffset,
1318                                   Zoffset, Width, Height, Depth, Format,
1319                                   ImageSize, Data) ->
1320                                      ok
1321
1322              Types:
1323
1324                 Texture  =  Level  =  Xoffset  =  Yoffset = Zoffset = Width =
1325                 Height = Depth = i()
1326                 Format = enum()
1327                 ImageSize = i()
1328                 Data = offset() | mem()
1329
1330              No documentation available.
1331
1332       convolutionFilter1D(Target, Internalformat, Width, Format, Type,
1333                           Image) ->
1334                              ok
1335
1336              Types:
1337
1338                 Target = Internalformat = enum()
1339                 Width = i()
1340                 Format = Type = enum()
1341                 Image = offset() | mem()
1342
1343              gl:convolutionFilter1D/6 builds  a  one-dimensional  convolution
1344              filter kernel from an array of pixels.
1345
1346              External documentation.
1347
1348       convolutionFilter2D(Target, Internalformat, Width, Height, Format,
1349                           Type, Image) ->
1350                              ok
1351
1352              Types:
1353
1354                 Target = Internalformat = enum()
1355                 Width = Height = i()
1356                 Format = Type = enum()
1357                 Image = offset() | mem()
1358
1359              gl:convolutionFilter2D/7  builds  a  two-dimensional convolution
1360              filter kernel from an array of pixels.
1361
1362              External documentation.
1363
1364       convolutionParameterf(Target :: enum(),
1365                             Pname :: enum(),
1366                             Params :: tuple()) ->
1367                                ok
1368
1369       convolutionParameterfv(Target :: enum(),
1370                              Pname :: enum(),
1371                              Params :: tuple()) ->
1372                                 ok
1373
1374       convolutionParameteri(Target :: enum(),
1375                             Pname :: enum(),
1376                             Params :: tuple()) ->
1377                                ok
1378
1379       convolutionParameteriv(Target :: enum(),
1380                              Pname :: enum(),
1381                              Params :: tuple()) ->
1382                                 ok
1383
1384              gl:convolutionParameter() sets the value of a convolution param‐
1385              eter.
1386
1387              External documentation.
1388
1389       copyBufferSubData(ReadTarget, WriteTarget, ReadOffset,
1390                         WriteOffset, Size) ->
1391                            ok
1392
1393              Types:
1394
1395                 ReadTarget = WriteTarget = enum()
1396                 ReadOffset = WriteOffset = Size = i()
1397
1398              gl:copyBufferSubData/5 and glCopyNamedBufferSubData copy part of
1399              the data store attached to a source buffer object  to  the  data
1400              store attached to a destination buffer object. The number of ba‐
1401              sic machine units indicated by Size is copied from the source at
1402              offset ReadOffset to the destination at WriteOffset. ReadOffset,
1403              WriteOffset and Size are in terms of basic machine units.
1404
1405              External documentation.
1406
1407       copyColorSubTable(Target :: enum(),
1408                         Start :: i(),
1409                         X :: i(),
1410                         Y :: i(),
1411                         Width :: i()) ->
1412                            ok
1413
1414              gl:copyColorSubTable/5 is used to respecify a contiguous portion
1415              of  a  color table previously defined using gl:colorTable/6. The
1416              pixels copied from the framebuffer replace the  portion  of  the
1417              existing  table from indices Start to start+x-1, inclusive. This
1418              region may not include any entries  outside  the  range  of  the
1419              color  table, as was originally specified. It is not an error to
1420              specify a subtexture with width of 0, but such  a  specification
1421              has no effect.
1422
1423              External documentation.
1424
1425       copyColorTable(Target :: enum(),
1426                      Internalformat :: enum(),
1427                      X :: i(),
1428                      Y :: i(),
1429                      Width :: i()) ->
1430                         ok
1431
1432              gl:copyColorTable/5  loads  a  color  table with pixels from the
1433              current ?GL_READ_BUFFER (rather than from main memory, as is the
1434              case for gl:colorTable/6).
1435
1436              External documentation.
1437
1438       copyConvolutionFilter1D(Target :: enum(),
1439                               Internalformat :: enum(),
1440                               X :: i(),
1441                               Y :: i(),
1442                               Width :: i()) ->
1443                                  ok
1444
1445              gl:copyConvolutionFilter1D/5  defines a one-dimensional convolu‐
1446              tion filter kernel with pixels from the current  ?GL_READ_BUFFER
1447              (rather  than  from  main memory, as is the case for gl:convolu‐
1448              tionFilter1D/6).
1449
1450              External documentation.
1451
1452       copyConvolutionFilter2D(Target :: enum(),
1453                               Internalformat :: enum(),
1454                               X :: i(),
1455                               Y :: i(),
1456                               Width :: i(),
1457                               Height :: i()) ->
1458                                  ok
1459
1460              gl:copyConvolutionFilter2D/6 defines a two-dimensional  convolu‐
1461              tion  filter kernel with pixels from the current ?GL_READ_BUFFER
1462              (rather than from main memory, as is the  case  for  gl:convolu‐
1463              tionFilter2D/7).
1464
1465              External documentation.
1466
1467       copyImageSubData(SrcName, SrcTarget, SrcLevel, SrcX, SrcY, SrcZ,
1468                        DstName, DstTarget, DstLevel, DstX, DstY, DstZ,
1469                        SrcWidth, SrcHeight, SrcDepth) ->
1470                           ok
1471
1472              Types:
1473
1474                 SrcName = i()
1475                 SrcTarget = enum()
1476                 SrcLevel = SrcX = SrcY = SrcZ = DstName = i()
1477                 DstTarget = enum()
1478                 DstLevel  =  DstX  = DstY = DstZ = SrcWidth = SrcHeight = Sr‐
1479                 cDepth = i()
1480
1481              gl:copyImageSubData/15 may be used to copy data from  one  image
1482              (i.e.  texture  or  renderbuffer)  to  another. gl:copyImageSub‐
1483              Data/15 does not perform  general-purpose  conversions  such  as
1484              scaling, resizing, blending, color-space, or format conversions.
1485              It should be considered to operate in a manner similar to a  CPU
1486              memcpy.  CopyImageSubData can copy between images with different
1487              internal formats, provided the formats are compatible.
1488
1489              External documentation.
1490
1491       copyPixels(X :: i(),
1492                  Y :: i(),
1493                  Width :: i(),
1494                  Height :: i(),
1495                  Type :: enum()) ->
1496                     ok
1497
1498              gl:copyPixels/5 copies a screen-aligned rectangle of pixels from
1499              the  specified frame buffer location to a region relative to the
1500              current raster position. Its operation is well defined  only  if
1501              the  entire pixel source region is within the exposed portion of
1502              the window. Results of copies from outside the window,  or  from
1503              regions  of the window that are not exposed, are hardware depen‐
1504              dent and undefined.
1505
1506              External documentation.
1507
1508       copyTexImage1D(Target, Level, Internalformat, X, Y, Width, Border) ->
1509                         ok
1510
1511              Types:
1512
1513                 Target = enum()
1514                 Level = i()
1515                 Internalformat = enum()
1516                 X = Y = Width = Border = i()
1517
1518              gl:copyTexImage1D/7 defines a one-dimensional texture image with
1519              pixels from the current ?GL_READ_BUFFER.
1520
1521              External documentation.
1522
1523       copyTexImage2D(Target, Level, Internalformat, X, Y, Width, Height,
1524                      Border) ->
1525                         ok
1526
1527              Types:
1528
1529                 Target = enum()
1530                 Level = i()
1531                 Internalformat = enum()
1532                 X = Y = Width = Height = Border = i()
1533
1534              gl:copyTexImage2D/8  defines a two-dimensional texture image, or
1535              cube-map  texture   image   with   pixels   from   the   current
1536              ?GL_READ_BUFFER.
1537
1538              External documentation.
1539
1540       copyTexSubImage1D(Target :: enum(),
1541                         Level :: i(),
1542                         Xoffset :: i(),
1543                         X :: i(),
1544                         Y :: i(),
1545                         Width :: i()) ->
1546                            ok
1547
1548              gl:copyTexSubImage1D/6  and  glCopyTextureSubImage1D  replace  a
1549              portion of a one-dimensional texture image with pixels from  the
1550              current ?GL_READ_BUFFER (rather than from main memory, as is the
1551              case for gl:texSubImage1D/7).  For  gl:copyTexSubImage1D/6,  the
1552              texture  object  that  is  bound  to Target will be used for the
1553              process. For glCopyTextureSubImage1D, Texture tells  which  tex‐
1554              ture object should be used for the purpose of the call.
1555
1556              External documentation.
1557
1558       copyTexSubImage2D(Target, Level, Xoffset, Yoffset, X, Y, Width,
1559                         Height) ->
1560                            ok
1561
1562              Types:
1563
1564                 Target = enum()
1565                 Level = Xoffset = Yoffset = X = Y = Width = Height = i()
1566
1567              gl:copyTexSubImage2D/8  and  glCopyTextureSubImage2D  replace  a
1568              rectangular portion of a two-dimensional texture image, cube-map
1569              texture  image, rectangular image, or a linear portion of a num‐
1570              ber of slices of a one-dimensional  array  texture  with  pixels
1571              from  the current ?GL_READ_BUFFER (rather than from main memory,
1572              as is the case for gl:texSubImage2D/9).
1573
1574              External documentation.
1575
1576       copyTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, X, Y,
1577                         Width, Height) ->
1578                            ok
1579
1580              Types:
1581
1582                 Target = enum()
1583                 Level = Xoffset = Yoffset = Zoffset = X = Y = Width =  Height
1584                 = i()
1585
1586              gl:copyTexSubImage3D/9 and glCopyTextureSubImage3D functions re‐
1587              place a rectangular portion of a three-dimensional or two-dimen‐
1588              sional   array  texture  image  with  pixels  from  the  current
1589              ?GL_READ_BUFFER (rather than from main memory, as  is  the  case
1590              for gl:texSubImage3D/11).
1591
1592              External documentation.
1593
1594       createBuffers(N :: i()) -> [i()]
1595
1596              gl:createBuffers/1  returns  N previously unused buffer names in
1597              Buffers, each representing a new buffer object initialized as if
1598              it had been bound to an unspecified target.
1599
1600              External documentation.
1601
1602       createFramebuffers(N :: i()) -> [i()]
1603
1604              gl:createFramebuffers/1  returns N previously unused framebuffer
1605              names in Framebuffers, each representing a new  framebuffer  ob‐
1606              ject initialized to the default state.
1607
1608              External documentation.
1609
1610       createProgram() -> i()
1611
1612              gl:createProgram/0 creates an empty program object and returns a
1613              non-zero value by which it can be referenced. A  program  object
1614              is  an object to which shader objects can be attached. This pro‐
1615              vides a mechanism to specify the shader  objects  that  will  be
1616              linked  to create a program. It also provides a means for check‐
1617              ing the compatibility of the shaders that will be used to create
1618              a  program  (for  instance, checking the compatibility between a
1619              vertex shader and a fragment shader). When no longer  needed  as
1620              part of a program object, shader objects can be detached.
1621
1622              External documentation.
1623
1624       createProgramObjectARB() -> i()
1625
1626              No documentation available.
1627
1628       createProgramPipelines(N :: i()) -> [i()]
1629
1630              gl:createProgramPipelines/1  returns N previously unused program
1631              pipeline names in Pipelines, each  representing  a  new  program
1632              pipeline object initialized to the default state.
1633
1634              External documentation.
1635
1636       createQueries(Target :: enum(), N :: i()) -> [i()]
1637
1638              gl:createQueries/2  returns  N  previously  unused  query object
1639              names in Ids, each representing a  new  query  object  with  the
1640              specified Target.
1641
1642              External documentation.
1643
1644       createRenderbuffers(N :: i()) -> [i()]
1645
1646              gl:createRenderbuffers/1  returns  N  previously  unused render‐
1647              buffer object names in Renderbuffers, each  representing  a  new
1648              renderbuffer object initialized to the default state.
1649
1650              External documentation.
1651
1652       createSamplers(N :: i()) -> [i()]
1653
1654              gl:createSamplers/1 returns N previously unused sampler names in
1655              Samplers, each representing a new sampler object initialized  to
1656              the default state.
1657
1658              External documentation.
1659
1660       createShader(Type :: enum()) -> i()
1661
1662              gl:createShader/1  creates  an empty shader object and returns a
1663              non-zero value by which it can be referenced. A shader object is
1664              used  to  maintain the source code strings that define a shader.
1665              ShaderType indicates the type of  shader  to  be  created.  Five
1666              types  of  shader  are  supported.  A  shader  of  type ?GL_COM‐
1667              PUTE_SHADER is a shader that is intended to run on the  program‐
1668              mable compute processor. A shader of type ?GL_VERTEX_SHADER is a
1669              shader that is intended to run on the programmable  vertex  pro‐
1670              cessor.  A  shader  of  type ?GL_TESS_CONTROL_SHADER is a shader
1671              that is intended to run on the programmable tessellation proces‐
1672              sor  in  the  control  stage.  A shader of type ?GL_TESS_EVALUA‐
1673              TION_SHADER is a shader that is intended to run on the  program‐
1674              mable  tessellation  processor in the evaluation stage. A shader
1675              of type ?GL_GEOMETRY_SHADER is a shader that is intended to  run
1676              on  the  programmable  geometry  processor.  A  shader  of  type
1677              ?GL_FRAGMENT_SHADER is a shader that is intended to run  on  the
1678              programmable fragment processor.
1679
1680              External documentation.
1681
1682       createShaderObjectARB(ShaderType :: enum()) -> i()
1683
1684              No documentation available.
1685
1686       createShaderProgramv(Type :: enum(),
1687                            Strings :: [unicode:chardata()]) ->
1688                               i()
1689
1690              No documentation available.
1691
1692       createTextures(Target :: enum(), N :: i()) -> [i()]
1693
1694              gl:createTextures/2 returns N previously unused texture names in
1695              Textures, each representing a new texture object of  the  dimen‐
1696              sionality  and  type  specified by Target and initialized to the
1697              default values for that texture type.
1698
1699              External documentation.
1700
1701       createTransformFeedbacks(N :: i()) -> [i()]
1702
1703              gl:createTransformFeedbacks/1 returns N previously unused trans‐
1704              form  feedback  object  names  in  Ids,  each representing a new
1705              transform feedback object initialized to the default state.
1706
1707              External documentation.
1708
1709       createVertexArrays(N :: i()) -> [i()]
1710
1711              gl:createVertexArrays/1 returns N previously unused vertex array
1712              object names in Arrays, each representing a new vertex array ob‐
1713              ject initialized to the default state.
1714
1715              External documentation.
1716
1717       cullFace(Mode :: enum()) -> ok
1718
1719              gl:cullFace/1 specifies whether front- or back-facing facets are
1720              culled  (as  specified  by  mode) when facet culling is enabled.
1721              Facet culling is initially disabled. To enable and disable facet
1722              culling, call the gl:enable/1 and gl:disable/1 commands with the
1723              argument ?GL_CULL_FACE. Facets include  triangles,  quadrilater‐
1724              als, polygons, and rectangles.
1725
1726              External documentation.
1727
1728       currentPaletteMatrixARB(Index :: i()) -> ok
1729
1730              No documentation available.
1731
1732       debugMessageControl(Source :: enum(),
1733                           Type :: enum(),
1734                           Severity :: enum(),
1735                           Ids :: [i()],
1736                           Enabled :: 0 | 1) ->
1737                              ok
1738
1739              gl:debugMessageControl/5  controls  the  reporting of debug mes‐
1740              sages generated by a debug context. The parameters Source,  Type
1741              and  Severity  form a filter to select messages from the pool of
1742              potential messages generated by the GL.
1743
1744              External documentation.
1745
1746       debugMessageInsert(Source, Type, Id, Severity, Length, Buf) -> ok
1747
1748              Types:
1749
1750                 Source = Type = enum()
1751                 Id = i()
1752                 Severity = enum()
1753                 Length = i()
1754                 Buf = string()
1755
1756              gl:debugMessageInsert/6 inserts a user-supplied message into the
1757              debug  output  queue.  Source  specifies the source that will be
1758              used to classify the message and must be ?GL_DEBUG_SOURCE_APPLI‐
1759              CATION  or  ?GL_DEBUG_SOURCE_THIRD_PARTY.  All other sources are
1760              reserved for use by the GL implementation.  Type  indicates  the
1761              type  of  the  message  to be inserted and may be one of ?GL_DE‐
1762              BUG_TYPE_ERROR,   ?GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR,    ?GL_DE‐
1763              BUG_TYPE_UNDEFINED_BEHAVIOR, ?GL_DEBUG_TYPE_PORTABILITY, ?GL_DE‐
1764              BUG_TYPE_PERFORMANCE,       ?GL_DEBUG_TYPE_MARKER,       ?GL_DE‐
1765              BUG_TYPE_PUSH_GROUP,    ?GL_DEBUG_TYPE_POP_GROUP,   or   ?GL_DE‐
1766              BUG_TYPE_OTHER. Severity indicates the severity of  the  message
1767              and  may  be  ?GL_DEBUG_SEVERITY_LOW, ?GL_DEBUG_SEVERITY_MEDIUM,
1768              ?GL_DEBUG_SEVERITY_HIGH or  ?GL_DEBUG_SEVERITY_NOTIFICATION.  Id
1769              is  available  for application defined use and may be any value.
1770              This value will be recorded and used to identify the message.
1771
1772              External documentation.
1773
1774       deleteBuffers(Buffers :: [i()]) -> ok
1775
1776              gl:deleteBuffers/1 deletes N buffer objects named  by  the  ele‐
1777              ments of the array Buffers. After a buffer object is deleted, it
1778              has no contents, and its name is free for reuse (for example  by
1779              gl:genBuffers/1).  If a buffer object that is currently bound is
1780              deleted, the binding reverts to 0 (the absence of any buffer ob‐
1781              ject).
1782
1783              External documentation.
1784
1785       deleteFramebuffers(Framebuffers :: [i()]) -> ok
1786
1787              gl:deleteFramebuffers/1  deletes the N framebuffer objects whose
1788              names are stored in the array  addressed  by  Framebuffers.  The
1789              name  zero is reserved by the GL and is silently ignored, should
1790              it occur in Framebuffers, as are  other  unused  names.  Once  a
1791              framebuffer  object  is deleted, its name is again unused and it
1792              has no attachments. If a framebuffer that is currently bound  to
1793              one   or   more   of   the   targets   ?GL_DRAW_FRAMEBUFFER   or
1794              ?GL_READ_FRAMEBUFFER is deleted, it is as  though  gl:bindFrame‐
1795              buffer/2  had  been  executed  with the corresponding Target and
1796              Framebuffer zero.
1797
1798              External documentation.
1799
1800       deleteLists(List :: i(), Range :: i()) -> ok
1801
1802              gl:deleteLists/2 causes a contiguous group of display  lists  to
1803              be  deleted.  List  is  the name of the first display list to be
1804              deleted, and Range is the number of display lists to delete. All
1805              display lists d with list<= d<= list+range-1 are deleted.
1806
1807              External documentation.
1808
1809       deleteNamedStringARB(Name :: string()) -> ok
1810
1811              No documentation available.
1812
1813       deleteObjectARB(Obj :: i()) -> ok
1814
1815              No documentation available.
1816
1817       deleteProgram(Program :: i()) -> ok
1818
1819              gl:deleteProgram/1 frees the memory and invalidates the name as‐
1820              sociated with the program object specified by Program. This com‐
1821              mand  effectively  undoes the effects of a call to gl:createPro‐
1822              gram/0.
1823
1824              External documentation.
1825
1826       deleteProgramPipelines(Pipelines :: [i()]) -> ok
1827
1828              gl:deleteProgramPipelines/1 deletes the N program  pipeline  ob‐
1829              jects  whose  names  are  stored  in the array Pipelines. Unused
1830              names in Pipelines are ignored, as is the  name  zero.  After  a
1831              program pipeline object is deleted, its name is again unused and
1832              it has no contents. If program pipeline object that is currently
1833              bound  is  deleted,  the binding for that object reverts to zero
1834              and no program pipeline object becomes current.
1835
1836              External documentation.
1837
1838       deleteProgramsARB(Programs :: [i()]) -> ok
1839
1840              No documentation available.
1841
1842       deleteQueries(Ids :: [i()]) -> ok
1843
1844              gl:deleteQueries/1 deletes N query objects named by the elements
1845              of  the  array  Ids.  After a query object is deleted, it has no
1846              contents, and its name is free for reuse (for example by gl:gen‐
1847              Queries/1).
1848
1849              External documentation.
1850
1851       deleteRenderbuffers(Renderbuffers :: [i()]) -> ok
1852
1853              gl:deleteRenderbuffers/1  deletes  the  N  renderbuffer  objects
1854              whose names are stored in the array addressed by  Renderbuffers.
1855              The  name  zero  is  reserved by the GL and is silently ignored,
1856              should it occur in Renderbuffers, as  are  other  unused  names.
1857              Once  a renderbuffer object is deleted, its name is again unused
1858              and it has no contents. If  a  renderbuffer  that  is  currently
1859              bound to the target ?GL_RENDERBUFFER is deleted, it is as though
1860              gl:bindRenderbuffer/2  had  been  executed  with  a  Target   of
1861              ?GL_RENDERBUFFER and a Name of zero.
1862
1863              External documentation.
1864
1865       deleteSamplers(Samplers :: [i()]) -> ok
1866
1867              gl:deleteSamplers/1  deletes N sampler objects named by the ele‐
1868              ments of the array Samplers. After a sampler object is  deleted,
1869              its  name is again unused. If a sampler object that is currently
1870              bound to a sampler unit is deleted, it is as though  gl:bindSam‐
1871              pler/2  is called with unit set to the unit the sampler is bound
1872              to and sampler zero. Unused names in samplers are  silently  ig‐
1873              nored, as is the reserved name zero.
1874
1875              External documentation.
1876
1877       deleteShader(Shader :: i()) -> ok
1878
1879              gl:deleteShader/1  frees the memory and invalidates the name as‐
1880              sociated with the shader object specified by Shader.  This  com‐
1881              mand  effectively  undoes  the  effects  of a call to gl:create‐
1882              Shader/1.
1883
1884              External documentation.
1885
1886       deleteSync(Sync :: i()) -> ok
1887
1888              gl:deleteSync/1 deletes the sync object specified  by  Sync.  If
1889              the fence command corresponding to the specified sync object has
1890              completed, or if no gl:waitSync/3  or  gl:clientWaitSync/3  com‐
1891              mands  are  blocking on Sync, the object is deleted immediately.
1892              Otherwise, Sync is flagged for deletion and will be deleted when
1893              it  is  no  longer  associated  with any fence command and is no
1894              longer blocking any gl:waitSync/3  or  gl:clientWaitSync/3  com‐
1895              mand.  In  either  case, after gl:deleteSync/1 returns, the name
1896              Sync is invalid and can no longer be used to refer to  the  sync
1897              object.
1898
1899              External documentation.
1900
1901       deleteTextures(Textures :: [i()]) -> ok
1902
1903              gl:deleteTextures/1  deletes N textures named by the elements of
1904              the array Textures. After a texture is deleted, it has  no  con‐
1905              tents or dimensionality, and its name is free for reuse (for ex‐
1906              ample by gl:genTextures/1). If a texture that is currently bound
1907              is deleted, the binding reverts to 0 (the default texture).
1908
1909              External documentation.
1910
1911       deleteTransformFeedbacks(Ids :: [i()]) -> ok
1912
1913              gl:deleteTransformFeedbacks/1  deletes  the N transform feedback
1914              objects whose names are stored in the array Ids. Unused names in
1915              Ids are ignored, as is the name zero. After a transform feedback
1916              object is deleted, its name is again unused and it has  no  con‐
1917              tents.  If  an  active transform feedback object is deleted, its
1918              name immediately becomes unused, but the  underlying  object  is
1919              not deleted until it is no longer active.
1920
1921              External documentation.
1922
1923       deleteVertexArrays(Arrays :: [i()]) -> ok
1924
1925              gl:deleteVertexArrays/1  deletes  N  vertex  array objects whose
1926              names are stored in the array addressed by Arrays. Once a vertex
1927              array object is deleted it has no contents and its name is again
1928              unused. If a vertex array object  that  is  currently  bound  is
1929              deleted, the binding for that object reverts to zero and the de‐
1930              fault vertex array becomes current. Unused names in  Arrays  are
1931              silently ignored, as is the value zero.
1932
1933              External documentation.
1934
1935       depthBoundsEXT(Zmin :: clamp(), Zmax :: clamp()) -> ok
1936
1937              No documentation available.
1938
1939       depthFunc(Func :: enum()) -> ok
1940
1941              gl:depthFunc/1  specifies  the function used to compare each in‐
1942              coming pixel depth value with the depth  value  present  in  the
1943              depth  buffer. The comparison is performed only if depth testing
1944              is   enabled.   (See    gl:enable/1    and    gl:disable/1    of
1945              ?GL_DEPTH_TEST.)
1946
1947              External documentation.
1948
1949       depthMask(Flag :: 0 | 1) -> ok
1950
1951              gl:depthMask/1 specifies whether the depth buffer is enabled for
1952              writing. If Flag is ?GL_FALSE, depth buffer writing is disabled.
1953              Otherwise, it is enabled. Initially, depth buffer writing is en‐
1954              abled.
1955
1956              External documentation.
1957
1958       depthRange(Near_val :: clamp(), Far_val :: clamp()) -> ok
1959
1960       depthRangef(N :: f(), F :: f()) -> ok
1961
1962              After clipping and division by w, depth coordinates  range  from
1963              -1  to  1,  corresponding  to  the near and far clipping planes.
1964              gl:depthRange/2 specifies a linear  mapping  of  the  normalized
1965              depth coordinates in this range to window depth coordinates. Re‐
1966              gardless of the actual depth buffer implementation, window coor‐
1967              dinate  depth  values  are  treated  as though they range from 0
1968              through 1 (like color components). Thus, the values accepted  by
1969              gl:depthRange/2  are  both clamped to this range before they are
1970              accepted.
1971
1972              External documentation.
1973
1974       depthRangeArrayv(First :: i(), V :: [{f(), f()}]) -> ok
1975
1976              No documentation available.
1977
1978       depthRangeIndexed(Index :: i(), N :: f(), F :: f()) -> ok
1979
1980              No documentation available.
1981
1982       detachObjectARB(ContainerObj :: i(), AttachedObj :: i()) -> ok
1983
1984              No documentation available.
1985
1986       detachShader(Program :: i(), Shader :: i()) -> ok
1987
1988              gl:detachShader/2 detaches the shader object specified by Shader
1989              from  the  program object specified by Program. This command can
1990              be used to undo the effect of the command gl:attachShader/2.
1991
1992              External documentation.
1993
1994       dispatchCompute(Num_groups_x :: i(),
1995                       Num_groups_y :: i(),
1996                       Num_groups_z :: i()) ->
1997                          ok
1998
1999              gl:dispatchCompute/3 launches one or more compute  work  groups.
2000              Each  work  group  is processed by the active program object for
2001              the compute shader stage. While the  individual  shader  invoca‐
2002              tions  within  a  work group are executed as a unit, work groups
2003              are executed completely independently and in unspecified  order.
2004              Num_groups_x,  Num_groups_y  and Num_groups_z specify the number
2005              of local work groups that will be dispatched in the X, Y  and  Z
2006              dimensions, respectively.
2007
2008              External documentation.
2009
2010       dispatchComputeGroupSizeARB(Num_groups_x, Num_groups_y,
2011                                   Num_groups_z, Group_size_x,
2012                                   Group_size_y, Group_size_z) ->
2013                                      ok
2014
2015              Types:
2016
2017                 Num_groups_x  =  Num_groups_y = Num_groups_z = Group_size_x =
2018                 Group_size_y = Group_size_z = i()
2019
2020              No documentation available.
2021
2022       dispatchComputeIndirect(Indirect :: i()) -> ok
2023
2024              gl:dispatchComputeIndirect/1 launches one or more  compute  work
2025              groups  using  parameters  stored in the buffer object currently
2026              bound to  the  ?GL_DISPATCH_INDIRECT_BUFFER  target.  Each  work
2027              group  is processed by the active program object for the compute
2028              shader stage. While the individual shader invocations  within  a
2029              work group are executed as a unit, work groups are executed com‐
2030              pletely independently and in unspecified  order.  Indirect  con‐
2031              tains  the offset into the data store of the buffer object bound
2032              to the ?GL_DISPATCH_INDIRECT_BUFFER target at which the  parame‐
2033              ters are stored.
2034
2035              External documentation.
2036
2037       drawArrays(Mode :: enum(), First :: i(), Count :: i()) -> ok
2038
2039              gl:drawArrays/3  specifies  multiple  geometric  primitives with
2040              very few subroutine calls. Instead of calling a GL procedure  to
2041              pass  each  individual  vertex, normal, texture coordinate, edge
2042              flag, or color, you can prespecify separate arrays of  vertices,
2043              normals,  and  colors  and  use  them to construct a sequence of
2044              primitives with a single call to gl:drawArrays/3.
2045
2046              External documentation.
2047
2048       drawArraysIndirect(Mode :: enum(), Indirect :: offset() | mem()) ->
2049                             ok
2050
2051              gl:drawArraysIndirect/2 specifies multiple geometric  primitives
2052              with  very few subroutine calls. gl:drawArraysIndirect/2 behaves
2053              similarly to gl:drawArraysInstancedBaseInstance/5, execept  that
2054              the   parameters   to  gl:drawArraysInstancedBaseInstance/5  are
2055              stored in memory at the address given by Indirect.
2056
2057              External documentation.
2058
2059       drawArraysInstanced(Mode :: enum(),
2060                           First :: i(),
2061                           Count :: i(),
2062                           Instancecount :: i()) ->
2063                              ok
2064
2065              No documentation available.
2066
2067       drawArraysInstancedBaseInstance(Mode :: enum(),
2068                                       First :: i(),
2069                                       Count :: i(),
2070                                       Instancecount :: i(),
2071                                       Baseinstance :: i()) ->
2072                                          ok
2073
2074              gl:drawArraysInstancedBaseInstance/5  behaves   identically   to
2075              gl:drawArrays/3 except that Instancecount instances of the range
2076              of elements are executed and the value of the  internal  counter
2077              InstanceID  advances for each iteration. InstanceID is an inter‐
2078              nal 32-bit integer counter that may be read by a  vertex  shader
2079              as ?gl_InstanceID.
2080
2081              External documentation.
2082
2083       drawBuffer(Mode :: enum()) -> ok
2084
2085              When  colors  are  written to the frame buffer, they are written
2086              into the color buffers specified by gl:drawBuffer/1. One of  the
2087              following values can be used for default framebuffer:
2088
2089              External documentation.
2090
2091       drawBuffers(Bufs :: [enum()]) -> ok
2092
2093              gl:drawBuffers/1 and glNamedFramebufferDrawBuffers define an ar‐
2094              ray of buffers into which outputs from the fragment shader  data
2095              will  be  written. If a fragment shader writes a value to one or
2096              more user defined output variables, then the value of each vari‐
2097              able  will  be  written  into the buffer specified at a location
2098              within Bufs corresponding to the location assigned to that  user
2099              defined  output.  The  draw buffer used for user defined outputs
2100              assigned to locations greater than or equal to N  is  implicitly
2101              set  to  ?GL_NONE and any data written to such an output is dis‐
2102              carded.
2103
2104              External documentation.
2105
2106       drawElements(Mode :: enum(),
2107                    Count :: i(),
2108                    Type :: enum(),
2109                    Indices :: offset() | mem()) ->
2110                       ok
2111
2112              gl:drawElements/4 specifies multiple geometric  primitives  with
2113              very  few  subroutine calls. Instead of calling a GL function to
2114              pass each individual vertex, normal,  texture  coordinate,  edge
2115              flag,  or color, you can prespecify separate arrays of vertices,
2116              normals, and so on, and use them  to  construct  a  sequence  of
2117              primitives with a single call to gl:drawElements/4.
2118
2119              External documentation.
2120
2121       drawElementsBaseVertex(Mode, Count, Type, Indices, Basevertex) ->
2122                                 ok
2123
2124              Types:
2125
2126                 Mode = enum()
2127                 Count = i()
2128                 Type = enum()
2129                 Indices = offset() | mem()
2130                 Basevertex = i()
2131
2132              gl:drawElementsBaseVertex/5  behaves  identically to gl:drawEle‐
2133              ments/4 except that the ith element transferred  by  the  corre‐
2134              sponding  draw  call will be taken from element Indices[i] + Ba‐
2135              severtex of each enabled array. If the resulting value is larger
2136              than  the  maximum  value representable by Type, it is as if the
2137              calculation were upconverted to 32-bit unsigned  integers  (with
2138              wrapping  on overflow conditions). The operation is undefined if
2139              the sum would be negative.
2140
2141              External documentation.
2142
2143       drawElementsIndirect(Mode :: enum(),
2144                            Type :: enum(),
2145                            Indirect :: offset() | mem()) ->
2146                               ok
2147
2148              gl:drawElementsIndirect/3 specifies multiple  indexed  geometric
2149              primitives  with very few subroutine calls. gl:drawElementsIndi‐
2150              rect/3  behaves  similarly  to  gl:drawElementsInstancedBaseVer‐
2151              texBaseInstance/7,  execpt  that  the  parameters to gl:drawEle‐
2152              mentsInstancedBaseVertexBaseInstance/7 are stored in  memory  at
2153              the address given by Indirect.
2154
2155              External documentation.
2156
2157       drawElementsInstanced(Mode, Count, Type, Indices, Instancecount) ->
2158                                ok
2159
2160              Types:
2161
2162                 Mode = enum()
2163                 Count = i()
2164                 Type = enum()
2165                 Indices = offset() | mem()
2166                 Instancecount = i()
2167
2168              No documentation available.
2169
2170       drawElementsInstancedBaseInstance(Mode, Count, Type, Indices,
2171                                         Instancecount, Baseinstance) ->
2172                                            ok
2173
2174              Types:
2175
2176                 Mode = enum()
2177                 Count = i()
2178                 Type = enum()
2179                 Indices = offset() | mem()
2180                 Instancecount = Baseinstance = i()
2181
2182              gl:drawElementsInstancedBaseInstance/6  behaves  identically  to
2183              gl:drawElements/4 except that Instancecount instances of the set
2184              of  elements  are executed and the value of the internal counter
2185              InstanceID advances for each iteration. InstanceID is an  inter‐
2186              nal  32-bit  integer counter that may be read by a vertex shader
2187              as ?gl_InstanceID.
2188
2189              External documentation.
2190
2191       drawElementsInstancedBaseVertex(Mode, Count, Type, Indices,
2192                                       Instancecount, Basevertex) ->
2193                                          ok
2194
2195              Types:
2196
2197                 Mode = enum()
2198                 Count = i()
2199                 Type = enum()
2200                 Indices = offset() | mem()
2201                 Instancecount = Basevertex = i()
2202
2203              gl:drawElementsInstancedBaseVertex/6  behaves   identically   to
2204              gl:drawElementsInstanced/5  except  that  the ith element trans‐
2205              ferred by the corresponding draw call will be taken from element
2206              Indices[i]  + Basevertex of each enabled array. If the resulting
2207              value is larger than the maximum value representable by Type, it
2208              is as if the calculation were upconverted to 32-bit unsigned in‐
2209              tegers (with wrapping on overflow conditions). The operation  is
2210              undefined if the sum would be negative.
2211
2212              External documentation.
2213
2214       drawElementsInstancedBaseVertexBaseInstance(Mode, Count, Type,
2215                                                   Indices,
2216                                                   Instancecount,
2217                                                   Basevertex,
2218                                                   Baseinstance) ->
2219                                                      ok
2220
2221              Types:
2222
2223                 Mode = enum()
2224                 Count = i()
2225                 Type = enum()
2226                 Indices = offset() | mem()
2227                 Instancecount = Basevertex = Baseinstance = i()
2228
2229              gl:drawElementsInstancedBaseVertexBaseInstance/7 behaves identi‐
2230              cally to gl:drawElementsInstanced/5 except that the ith  element
2231              transferred  by  the  corresponding draw call will be taken from
2232              element Indices[i] + Basevertex of each enabled  array.  If  the
2233              resulting  value  is larger than the maximum value representable
2234              by Type, it is as if the calculation were upconverted to  32-bit
2235              unsigned  integers  (with  wrapping on overflow conditions). The
2236              operation is undefined if the sum would be negative.
2237
2238              External documentation.
2239
2240       drawPixels(Width :: i(),
2241                  Height :: i(),
2242                  Format :: enum(),
2243                  Type :: enum(),
2244                  Pixels :: offset() | mem()) ->
2245                     ok
2246
2247              gl:drawPixels/5 reads pixel data from memory and writes it  into
2248              the  frame  buffer relative to the current raster position, pro‐
2249              vided that the raster position is valid. Use  gl:rasterPos()  or
2250              gl:windowPos()  to set the current raster position; use gl:get()
2251              with argument ?GL_CURRENT_RASTER_POSITION_VALID to determine  if
2252              the  specified raster position is valid, and gl:get() with argu‐
2253              ment ?GL_CURRENT_RASTER_POSITION to query the raster position.
2254
2255              External documentation.
2256
2257       drawRangeElements(Mode, Start, End, Count, Type, Indices) -> ok
2258
2259              Types:
2260
2261                 Mode = enum()
2262                 Start = End = Count = i()
2263                 Type = enum()
2264                 Indices = offset() | mem()
2265
2266              gl:drawRangeElements/6  is  a  restricted  form  of  gl:drawEle‐
2267              ments/4.  Mode,  and  Count match the corresponding arguments to
2268              gl:drawElements/4, with the additional constraint that all  val‐
2269              ues  in  the arrays Count must lie between Start and End, inclu‐
2270              sive.
2271
2272              External documentation.
2273
2274       drawRangeElementsBaseVertex(Mode, Start, End, Count, Type,
2275                                   Indices, Basevertex) ->
2276                                      ok
2277
2278              Types:
2279
2280                 Mode = enum()
2281                 Start = End = Count = i()
2282                 Type = enum()
2283                 Indices = offset() | mem()
2284                 Basevertex = i()
2285
2286              gl:drawRangeElementsBaseVertex/7  is  a   restricted   form   of
2287              gl:drawElementsBaseVertex/5.  Mode,  Count  and Basevertex match
2288              the corresponding arguments to gl:drawElementsBaseVertex/5, with
2289              the  additional  constraint that all values in the array Indices
2290              must lie between Start and End, inclusive, prior to  adding  Ba‐
2291              severtex.  Index values lying outside the range [Start, End] are
2292              treated in the same way as gl:drawElementsBaseVertex/5. The  ith
2293              element transferred by the corresponding draw call will be taken
2294              from element Indices[i] + Basevertex of each enabled  array.  If
2295              the  resulting  value  is  larger  than the maximum value repre‐
2296              sentable by Type, it is as if the calculation  were  upconverted
2297              to  32-bit  unsigned  integers (with wrapping on overflow condi‐
2298              tions). The operation is undefined if the sum would be negative.
2299
2300              External documentation.
2301
2302       drawTransformFeedback(Mode :: enum(), Id :: i()) -> ok
2303
2304              gl:drawTransformFeedback/2 draws primitives of a type  specified
2305              by  Mode  using  a  count  retrieved from the transform feedback
2306              specified by Id. Calling gl:drawTransformFeedback/2  is  equiva‐
2307              lent  to  calling  gl:drawArrays/3 with Mode as specified, First
2308              set to zero, and Count set to the number of vertices captured on
2309              vertex  stream  zero the last time transform feedback was active
2310              on the transform feedback object named by Id.
2311
2312              External documentation.
2313
2314       drawTransformFeedbackInstanced(Mode :: enum(),
2315                                      Id :: i(),
2316                                      Instancecount :: i()) ->
2317                                         ok
2318
2319              No documentation available.
2320
2321       drawTransformFeedbackStream(Mode :: enum(),
2322                                   Id :: i(),
2323                                   Stream :: i()) ->
2324                                      ok
2325
2326              gl:drawTransformFeedbackStream/3  draws  primitives  of  a  type
2327              specified  by  Mode  using  a count retrieved from the transform
2328              feedback stream specified by Stream of  the  transform  feedback
2329              object specified by Id. Calling gl:drawTransformFeedbackStream/3
2330              is equivalent to calling gl:drawArrays/3 with Mode as specified,
2331              First  set to zero, and Count set to the number of vertices cap‐
2332              tured on vertex stream Stream the last time  transform  feedback
2333              was active on the transform feedback object named by Id.
2334
2335              External documentation.
2336
2337       drawTransformFeedbackStreamInstanced(Mode :: enum(),
2338                                            Id :: i(),
2339                                            Stream :: i(),
2340                                            Instancecount :: i()) ->
2341                                               ok
2342
2343              No documentation available.
2344
2345       edgeFlag(Flag :: 0 | 1) -> ok
2346
2347              Each vertex of a polygon, separate triangle, or separate quadri‐
2348              lateral specified  between  a  gl:'begin'/1/gl:'end'/0  pair  is
2349              marked as the start of either a boundary or nonboundary edge. If
2350              the current edge flag is true when the vertex is specified,  the
2351              vertex is marked as the start of a boundary edge. Otherwise, the
2352              vertex is marked as the start of a  nonboundary  edge.  gl:edge‐
2353              Flag/1  sets  the  edge flag bit to ?GL_TRUE if Flag is ?GL_TRUE
2354              and to ?GL_FALSE otherwise.
2355
2356              External documentation.
2357
2358       edgeFlagPointer(Stride :: i(), Ptr :: offset() | mem()) -> ok
2359
2360              gl:edgeFlagPointer/2 specifies the location and data  format  of
2361              an  array  of  boolean  edge flags to use when rendering. Stride
2362              specifies the byte stride from one edge flag to the next, allow‐
2363              ing  vertices and attributes to be packed into a single array or
2364              stored in separate arrays.
2365
2366              External documentation.
2367
2368       edgeFlagv(X1 :: {Flag :: 0 | 1}) -> ok
2369
2370              No documentation available.
2371
2372       disable(Cap :: enum()) -> ok
2373
2374       enable(Cap :: enum()) -> ok
2375
2376       enablei(Target :: enum(), Index :: i()) -> ok
2377
2378              gl:enable/1 and gl:disable/1 enable and disable various capabil‐
2379              ities.  Use  gl:isEnabled/1 or gl:get() to determine the current
2380              setting of any capability. The initial value for each capability
2381              with   the   exception  of  ?GL_DITHER  and  ?GL_MULTISAMPLE  is
2382              ?GL_FALSE. The initial value for ?GL_DITHER and  ?GL_MULTISAMPLE
2383              is ?GL_TRUE.
2384
2385              External documentation.
2386
2387       disableClientState(Cap :: enum()) -> ok
2388
2389       enableClientState(Cap :: enum()) -> ok
2390
2391              gl:enableClientState/1  and  gl:disableClientState/1  enable  or
2392              disable individual client-side  capabilities.  By  default,  all
2393              client-side   capabilities   are   disabled.   Both   gl:enable‐
2394              ClientState/1 and gl:disableClientState/1 take  a  single  argu‐
2395              ment, Cap, which can assume one of the following values:
2396
2397              External documentation.
2398
2399       disableVertexArrayAttrib(Vaobj :: i(), Index :: i()) -> ok
2400
2401       enableVertexArrayAttrib(Vaobj :: i(), Index :: i()) -> ok
2402
2403              No documentation available.
2404
2405       disableVertexAttribArray(Index :: i()) -> ok
2406
2407       enableVertexAttribArray(Index :: i()) -> ok
2408
2409              gl:enableVertexAttribArray/1   and  gl:enableVertexArrayAttrib/2
2410              enable the generic vertex attribute array  specified  by  Index.
2411              gl:enableVertexAttribArray/1  uses  currently bound vertex array
2412              object for the operation,  whereas  gl:enableVertexArrayAttrib/2
2413              updates state of the vertex array object with ID Vaobj.
2414
2415              External documentation.
2416
2417       disablei(Target :: enum(), Index :: i()) -> ok
2418
2419              No documentation available.
2420
2421       evalCoord1d(U :: f()) -> ok
2422
2423       evalCoord1dv(X1 :: {U :: f()}) -> ok
2424
2425       evalCoord1f(U :: f()) -> ok
2426
2427       evalCoord1fv(X1 :: {U :: f()}) -> ok
2428
2429       evalCoord2d(U :: f(), V :: f()) -> ok
2430
2431       evalCoord2dv(X1 :: {U :: f(), V :: f()}) -> ok
2432
2433       evalCoord2f(U :: f(), V :: f()) -> ok
2434
2435       evalCoord2fv(X1 :: {U :: f(), V :: f()}) -> ok
2436
2437              gl:evalCoord1()  evaluates enabled one-dimensional maps at argu‐
2438              ment U. gl:evalCoord2() does the same for  two-dimensional  maps
2439              using  two  domain  values,  U  and  V.  To  define  a map, call
2440              gl:map1() and gl:map2(); to enable and disable it,  call  gl:en‐
2441              able/1 and gl:disable/1.
2442
2443              External documentation.
2444
2445       evalMesh1(Mode :: enum(), I1 :: i(), I2 :: i()) -> ok
2446
2447       evalMesh2(Mode :: enum(),
2448                 I1 :: i(),
2449                 I2 :: i(),
2450                 J1 :: i(),
2451                 J2 :: i()) ->
2452                    ok
2453
2454              gl:mapGrid() and gl:evalMesh() are used in tandem to efficiently
2455              generate and evaluate a series of evenly-spaced map domain  val‐
2456              ues. gl:evalMesh() steps through the integer domain of a one- or
2457              two-dimensional grid, whose range is the domain of  the  evalua‐
2458              tion  maps specified by gl:map1() and gl:map2(). Mode determines
2459              whether the resulting vertices are connected as  points,  lines,
2460              or filled polygons.
2461
2462              External documentation.
2463
2464       evalPoint1(I :: i()) -> ok
2465
2466       evalPoint2(I :: i(), J :: i()) -> ok
2467
2468              gl:mapGrid() and gl:evalMesh() are used in tandem to efficiently
2469              generate and evaluate a series of evenly spaced map domain  val‐
2470              ues.  gl:evalPoint() can be used to evaluate a single grid point
2471              in the same gridspace that is traversed by gl:evalMesh().  Call‐
2472              ing  gl:evalPoint1/1  is equivalent to calling glEvalCoord1( i.ð
2473              u+u 1 ); where ð u=(u 2-u 1)/n
2474
2475              External documentation.
2476
2477       evaluateDepthValuesARB() -> ok
2478
2479              No documentation available.
2480
2481       feedbackBuffer(Size :: i(), Type :: enum(), Buffer :: mem()) -> ok
2482
2483              The gl:feedbackBuffer/3 function  controls  feedback.  Feedback,
2484              like  selection,  is  a GL mode. The mode is selected by calling
2485              gl:renderMode/1 with ?GL_FEEDBACK. When the GL  is  in  feedback
2486              mode, no pixels are produced by rasterization. Instead, informa‐
2487              tion about primitives that would have  been  rasterized  is  fed
2488              back to the application using the GL.
2489
2490              External documentation.
2491
2492       fenceSync(Condition :: enum(), Flags :: i()) -> i()
2493
2494              gl:fenceSync/2  creates a new fence sync object, inserts a fence
2495              command into the GL command stream and associates it  with  that
2496              sync  object,  and  returns a non-zero name corresponding to the
2497              sync object.
2498
2499              External documentation.
2500
2501       finish() -> ok
2502
2503              gl:finish/0 does not return until the effects of all  previously
2504              called  GL  commands  are  complete.  Such  effects  include all
2505              changes to GL state, all changes to connection  state,  and  all
2506              changes to the frame buffer contents.
2507
2508              External documentation.
2509
2510       flush() -> ok
2511
2512              Different  GL implementations buffer commands in several differ‐
2513              ent locations, including network buffers and the graphics accel‐
2514              erator  itself. gl:flush/0 empties all of these buffers, causing
2515              all issued commands to be executed as quickly as  they  are  ac‐
2516              cepted by the actual rendering engine. Though this execution may
2517              not be completed in any particular time period, it does complete
2518              in finite time.
2519
2520              External documentation.
2521
2522       flushMappedBufferRange(Target :: enum(),
2523                              Offset :: i(),
2524                              Length :: i()) ->
2525                                 ok
2526
2527              gl:flushMappedBufferRange/3  indicates  that  modifications have
2528              been made to a range of a mapped buffer object. The  buffer  ob‐
2529              ject must previously have been mapped with the ?GL_MAP_FLUSH_EX‐
2530              PLICIT_BIT flag.
2531
2532              External documentation.
2533
2534       flushMappedNamedBufferRange(Buffer :: i(),
2535                                   Offset :: i(),
2536                                   Length :: i()) ->
2537                                      ok
2538
2539              No documentation available.
2540
2541       fogf(Pname :: enum(), Param :: f()) -> ok
2542
2543       fogfv(Pname :: enum(), Params :: tuple()) -> ok
2544
2545       fogi(Pname :: enum(), Param :: i()) -> ok
2546
2547       fogiv(Pname :: enum(), Params :: tuple()) -> ok
2548
2549              Fog is initially disabled. While enabled, fog affects rasterized
2550              geometry, bitmaps, and pixel blocks, but not buffer clear opera‐
2551              tions. To enable and disable fog, call gl:enable/1  and  gl:dis‐
2552              able/1 with argument ?GL_FOG.
2553
2554              External documentation.
2555
2556       fogCoordd(Coord :: f()) -> ok
2557
2558       fogCoorddv(X1 :: {Coord :: f()}) -> ok
2559
2560       fogCoordf(Coord :: f()) -> ok
2561
2562       fogCoordfv(X1 :: {Coord :: f()}) -> ok
2563
2564              gl:fogCoord()  specifies  the  fog coordinate that is associated
2565              with each vertex and the  current  raster  position.  The  value
2566              specified  is  interpolated  and used in computing the fog color
2567              (see gl:fog()).
2568
2569              External documentation.
2570
2571       fogCoordPointer(Type :: enum(),
2572                       Stride :: i(),
2573                       Pointer :: offset() | mem()) ->
2574                          ok
2575
2576              gl:fogCoordPointer/3 specifies the location and data  format  of
2577              an  array  of fog coordinates to use when rendering. Type speci‐
2578              fies the data type of each fog coordinate, and Stride  specifies
2579              the  byte  stride  from one fog coordinate to the next, allowing
2580              vertices and attributes to be packed  into  a  single  array  or
2581              stored in separate arrays.
2582
2583              External documentation.
2584
2585       framebufferParameteri(Target :: enum(),
2586                             Pname :: enum(),
2587                             Param :: i()) ->
2588                                ok
2589
2590              No documentation available.
2591
2592       framebufferRenderbuffer(Target, Attachment, Renderbuffertarget,
2593                               Renderbuffer) ->
2594                                  ok
2595
2596              Types:
2597
2598                 Target = Attachment = Renderbuffertarget = enum()
2599                 Renderbuffer = i()
2600
2601              gl:framebufferRenderbuffer/4  and glNamedFramebufferRenderbuffer
2602              attaches a renderbuffer as one of the  logical  buffers  of  the
2603              specified  framebuffer  object. Renderbuffers cannot be attached
2604              to the default draw and read framebuffer, so they are not  valid
2605              targets of these commands.
2606
2607              External documentation.
2608
2609       framebufferTexture(Target :: enum(),
2610                          Attachment :: enum(),
2611                          Texture :: i(),
2612                          Level :: i()) ->
2613                             ok
2614
2615       framebufferTexture1D(Target :: enum(),
2616                            Attachment :: enum(),
2617                            Textarget :: enum(),
2618                            Texture :: i(),
2619                            Level :: i()) ->
2620                               ok
2621
2622       framebufferTexture2D(Target :: enum(),
2623                            Attachment :: enum(),
2624                            Textarget :: enum(),
2625                            Texture :: i(),
2626                            Level :: i()) ->
2627                               ok
2628
2629       framebufferTexture3D(Target, Attachment, Textarget, Texture,
2630                            Level, Zoffset) ->
2631                               ok
2632
2633       framebufferTextureFaceARB(Target :: enum(),
2634                                 Attachment :: enum(),
2635                                 Texture :: i(),
2636                                 Level :: i(),
2637                                 Face :: enum()) ->
2638                                    ok
2639
2640       framebufferTextureLayer(Target :: enum(),
2641                               Attachment :: enum(),
2642                               Texture :: i(),
2643                               Level :: i(),
2644                               Layer :: i()) ->
2645                                  ok
2646
2647              These commands attach a selected mipmap level or image of a tex‐
2648              ture object as one of  the  logical  buffers  of  the  specified
2649              framebuffer  object.  Textures cannot be attached to the default
2650              draw and read framebuffer, so they  are  not  valid  targets  of
2651              these commands.
2652
2653              External documentation.
2654
2655       frontFace(Mode :: enum()) -> ok
2656
2657              In  a  scene  composed entirely of opaque closed surfaces, back-
2658              facing polygons are never visible. Eliminating  these  invisible
2659              polygons has the obvious benefit of speeding up the rendering of
2660              the image. To enable  and  disable  elimination  of  back-facing
2661              polygons,   call  gl:enable/1  and  gl:disable/1  with  argument
2662              ?GL_CULL_FACE.
2663
2664              External documentation.
2665
2666       frustum(Left :: f(),
2667               Right :: f(),
2668               Bottom :: f(),
2669               Top :: f(),
2670               Near_val :: f(),
2671               Far_val :: f()) ->
2672                  ok
2673
2674              gl:frustum/6 describes a perspective matrix that produces a per‐
2675              spective projection. The current matrix (see gl:matrixMode/1) is
2676              multiplied by this matrix and the result  replaces  the  current
2677              matrix, as if gl:multMatrix() were called with the following ma‐
2678              trix as its argument:
2679
2680              External documentation.
2681
2682       genBuffers(N :: i()) -> [i()]
2683
2684              gl:genBuffers/1 returns N buffer object names in Buffers.  There
2685              is  no  guarantee  that the names form a contiguous set of inte‐
2686              gers; however, it is guaranteed that none of the returned  names
2687              was in use immediately before the call to gl:genBuffers/1.
2688
2689              External documentation.
2690
2691       genFramebuffers(N :: i()) -> [i()]
2692
2693              gl:genFramebuffers/1  returns N framebuffer object names in Ids.
2694              There is no guarantee that the names form a  contiguous  set  of
2695              integers;  however,  it  is guaranteed that none of the returned
2696              names was in use immediately before  the  call  to  gl:genFrame‐
2697              buffers/1.
2698
2699              External documentation.
2700
2701       genLists(Range :: i()) -> i()
2702
2703              gl:genLists/1  has  one argument, Range. It returns an integer n
2704              such that Range contiguous empty display lists,  named  n,  n+1,
2705              ..., n+range-1, are created. If Range is 0, if there is no group
2706              of Range contiguous names available, or if any error  is  gener‐
2707              ated, no display lists are generated, and 0 is returned.
2708
2709              External documentation.
2710
2711       genProgramPipelines(N :: i()) -> [i()]
2712
2713              gl:genProgramPipelines/1  returns  N  previously  unused program
2714              pipeline object names in Pipelines. These names  are  marked  as
2715              used,  for  the  purposes  of gl:genProgramPipelines/1 only, but
2716              they acquire program pipeline state only  when  they  are  first
2717              bound.
2718
2719              External documentation.
2720
2721       genProgramsARB(N :: i()) -> [i()]
2722
2723              No documentation available.
2724
2725       genQueries(N :: i()) -> [i()]
2726
2727              gl:genQueries/1 returns N query object names in Ids. There is no
2728              guarantee that the names form a contiguous set of integers; how‐
2729              ever,  it  is  guaranteed that none of the returned names was in
2730              use immediately before the call to gl:genQueries/1.
2731
2732              External documentation.
2733
2734       genRenderbuffers(N :: i()) -> [i()]
2735
2736              gl:genRenderbuffers/1 returns N  renderbuffer  object  names  in
2737              Renderbuffers.  There is no guarantee that the names form a con‐
2738              tiguous set of integers; however, it is guaranteed that none  of
2739              the  returned  names  was  in use immediately before the call to
2740              gl:genRenderbuffers/1.
2741
2742              External documentation.
2743
2744       genSamplers(Count :: i()) -> [i()]
2745
2746              gl:genSamplers/1 returns N sampler  object  names  in  Samplers.
2747              There  is  no  guarantee that the names form a contiguous set of
2748              integers; however, it is guaranteed that none  of  the  returned
2749              names  was  in  use  immediately  before  the call to gl:genSam‐
2750              plers/1.
2751
2752              External documentation.
2753
2754       genTextures(N :: i()) -> [i()]
2755
2756              gl:genTextures/1 returns N texture names in Textures.  There  is
2757              no  guarantee  that the names form a contiguous set of integers;
2758              however, it is guaranteed that none of the returned names was in
2759              use immediately before the call to gl:genTextures/1.
2760
2761              External documentation.
2762
2763       genTransformFeedbacks(N :: i()) -> [i()]
2764
2765              gl:genTransformFeedbacks/1 returns N previously unused transform
2766              feedback object names in Ids. These names are  marked  as  used,
2767              for  the  purposes  of gl:genTransformFeedbacks/1 only, but they
2768              acquire transform feedback state only when they are first bound.
2769
2770              External documentation.
2771
2772       genVertexArrays(N :: i()) -> [i()]
2773
2774              gl:genVertexArrays/1 returns N vertex array object names in  Ar‐
2775              rays. There is no guarantee that the names form a contiguous set
2776              of integers; however, it is guaranteed that none of the returned
2777              names  was in use immediately before the call to gl:genVertexAr‐
2778              rays/1.
2779
2780              External documentation.
2781
2782       generateMipmap(Target :: enum()) -> ok
2783
2784              gl:generateMipmap/1  and  gl:generateTextureMipmap/1   generates
2785              mipmaps   for   the  specified  texture  object.  For  gl:gener‐
2786              ateMipmap/1, the texture object that is  bound  to  Target.  For
2787              gl:generateTextureMipmap/1,  Texture  is the name of the texture
2788              object.
2789
2790              External documentation.
2791
2792       generateTextureMipmap(Texture :: i()) -> ok
2793
2794              No documentation available.
2795
2796       getBooleani_v(Target :: enum(), Index :: i()) -> [0 | 1]
2797
2798       getBooleanv(Pname :: enum()) -> [0 | 1]
2799
2800       getDoublei_v(Target :: enum(), Index :: i()) -> [f()]
2801
2802       getDoublev(Pname :: enum()) -> [f()]
2803
2804       getFloati_v(Target :: enum(), Index :: i()) -> [f()]
2805
2806       getFloatv(Pname :: enum()) -> [f()]
2807
2808       getInteger64i_v(Target :: enum(), Index :: i()) -> [i()]
2809
2810       getInteger64v(Pname :: enum()) -> [i()]
2811
2812       getIntegeri_v(Target :: enum(), Index :: i()) -> [i()]
2813
2814       getIntegerv(Pname :: enum()) -> [i()]
2815
2816              These commands return values for simple state variables  in  GL.
2817              Pname is a symbolic constant indicating the state variable to be
2818              returned, and Data is a pointer to an  array  of  the  indicated
2819              type in which to place the returned data.
2820
2821              External documentation.
2822
2823       getActiveAttrib(Program :: i(), Index :: i(), BufSize :: i()) ->
2824                          {Size :: i(), Type :: enum(), Name :: string()}
2825
2826              gl:getActiveAttrib/3  returns information about an active attri‐
2827              bute variable in the program object specified  by  Program.  The
2828              number  of  active attributes can be obtained by calling gl:get‐
2829              Program() with the value ?GL_ACTIVE_ATTRIBUTES. A value of 0 for
2830              Index  selects  the first active attribute variable. Permissible
2831              values for Index range from zero to the number of active  attri‐
2832              bute variables minus one.
2833
2834              External documentation.
2835
2836       getActiveAttribARB(ProgramObj :: i(),
2837                          Index :: i(),
2838                          MaxLength :: i()) ->
2839                             {Size :: i(),
2840                              Type :: enum(),
2841                              Name :: string()}
2842
2843              No documentation available.
2844
2845       getActiveSubroutineName(Program :: i(),
2846                               Shadertype :: enum(),
2847                               Index :: i(),
2848                               Bufsize :: i()) ->
2849                                  string()
2850
2851              gl:getActiveSubroutineName/4  queries  the  name  of  an  active
2852              shader subroutine uniform from the program object given in  Pro‐
2853              gram. Index specifies the index of the shader subroutine uniform
2854              within the shader stage given by Stage, and  must  between  zero
2855              and the value of ?GL_ACTIVE_SUBROUTINES minus one for the shader
2856              stage.
2857
2858              External documentation.
2859
2860       getActiveSubroutineUniformName(Program :: i(),
2861                                      Shadertype :: enum(),
2862                                      Index :: i(),
2863                                      Bufsize :: i()) ->
2864                                         string()
2865
2866              gl:getActiveSubroutineUniformName/4 retrieves the name of an ac‐
2867              tive shader subroutine uniform. Program contains the name of the
2868              program containing the uniform. Shadertype specifies  the  stage
2869              for  which the uniform location, given by Index, is valid. Index
2870              must be between zero and the value of ?GL_ACTIVE_SUBROUTINE_UNI‐
2871              FORMS minus one for the shader stage.
2872
2873              External documentation.
2874
2875       getActiveUniform(Program :: i(), Index :: i(), BufSize :: i()) ->
2876                           {Size :: i(),
2877                            Type :: enum(),
2878                            Name :: string()}
2879
2880              gl:getActiveUniform/3  returns  information about an active uni‐
2881              form variable in the program object specified  by  Program.  The
2882              number  of  active  uniform variables can be obtained by calling
2883              gl:getProgram() with the value ?GL_ACTIVE_UNIFORMS. A value of 0
2884              for Index selects the first active uniform variable. Permissible
2885              values for Index range from zero to the number of active uniform
2886              variables minus one.
2887
2888              External documentation.
2889
2890       getActiveUniformARB(ProgramObj :: i(),
2891                           Index :: i(),
2892                           MaxLength :: i()) ->
2893                              {Size :: i(),
2894                               Type :: enum(),
2895                               Name :: string()}
2896
2897              No documentation available.
2898
2899       getActiveUniformBlockiv(Program :: i(),
2900                               UniformBlockIndex :: i(),
2901                               Pname :: enum(),
2902                               Params :: mem()) ->
2903                                  ok
2904
2905              gl:getActiveUniformBlockiv/4  retrieves information about an ac‐
2906              tive uniform block within Program.
2907
2908              External documentation.
2909
2910       getActiveUniformBlockName(Program :: i(),
2911                                 UniformBlockIndex :: i(),
2912                                 BufSize :: i()) ->
2913                                    string()
2914
2915              gl:getActiveUniformBlockName/3 retrieves the name of the  active
2916              uniform block at UniformBlockIndex within Program.
2917
2918              External documentation.
2919
2920       getActiveUniformName(Program :: i(),
2921                            UniformIndex :: i(),
2922                            BufSize :: i()) ->
2923                               string()
2924
2925              gl:getActiveUniformName/3 returns the name of the active uniform
2926              at UniformIndex within Program. If UniformName is not  NULL,  up
2927              to BufSize characters (including a nul-terminator) will be writ‐
2928              ten into the array whose address is specified by UniformName. If
2929              Length is not NULL, the number of characters that were (or would
2930              have been) written into UniformName (not including the  nul-ter‐
2931              minator)  will be placed in the variable whose address is speci‐
2932              fied in Length. If Length is NULL, no length  is  returned.  The
2933              length  of  the  longest uniform name in Program is given by the
2934              value of ?GL_ACTIVE_UNIFORM_MAX_LENGTH,  which  can  be  queried
2935              with gl:getProgram().
2936
2937              External documentation.
2938
2939       getActiveUniformsiv(Program :: i(),
2940                           UniformIndices :: [i()],
2941                           Pname :: enum()) ->
2942                              [i()]
2943
2944              No documentation available.
2945
2946       getAttachedObjectsARB(ContainerObj :: i(), MaxCount :: i()) ->
2947                                [i()]
2948
2949              No documentation available.
2950
2951       getAttachedShaders(Program :: i(), MaxCount :: i()) -> [i()]
2952
2953              gl:getAttachedShaders/2  returns the names of the shader objects
2954              attached to Program. The names of shader objects  that  are  at‐
2955              tached to Program will be returned in Shaders. The actual number
2956              of shader names written into Shaders is returned in Count. If no
2957              shader  objects  are attached to Program, Count is set to 0. The
2958              maximum number of shader names that may be returned  in  Shaders
2959              is specified by MaxCount.
2960
2961              External documentation.
2962
2963       getAttribLocation(Program :: i(), Name :: string()) -> i()
2964
2965              gl:getAttribLocation/2 queries the previously linked program ob‐
2966              ject specified by Program for the attribute  variable  specified
2967              by  Name  and  returns the index of the generic vertex attribute
2968              that is bound to that attribute variable. If Name  is  a  matrix
2969              attribute  variable, the index of the first column of the matrix
2970              is returned. If the named attribute variable is  not  an  active
2971              attribute in the specified program object or if Name starts with
2972              the reserved prefix "gl_", a value of -1 is returned.
2973
2974              External documentation.
2975
2976       getAttribLocationARB(ProgramObj :: i(), Name :: string()) -> i()
2977
2978              No documentation available.
2979
2980       getBufferParameterivARB(Target :: enum(), Pname :: enum()) ->
2981                                  [i()]
2982
2983              No documentation available.
2984
2985       getBufferParameteri64v(Target :: enum(), Pname :: enum()) -> [i()]
2986
2987              No documentation available.
2988
2989       getBufferParameteriv(Target :: enum(), Pname :: enum()) -> i()
2990
2991              gl:getBufferParameteriv/2 returns in Data a  selected  parameter
2992              of the buffer object specified by Target.
2993
2994              External documentation.
2995
2996       getBufferSubData(Target :: enum(),
2997                        Offset :: i(),
2998                        Size :: i(),
2999                        Data :: mem()) ->
3000                           ok
3001
3002              gl:getBufferSubData/4 and glGetNamedBufferSubData return some or
3003              all of the data contents of the data store of the specified buf‐
3004              fer  object.  Data  starting at byte offset Offset and extending
3005              for Size bytes is copied from the buffer object's data store  to
3006              the  memory pointed to by Data. An error is thrown if the buffer
3007              object is currently mapped, or if Offset and Size  together  de‐
3008              fine  a  range  beyond  the  bounds  of the buffer object's data
3009              store.
3010
3011              External documentation.
3012
3013       getClipPlane(Plane :: enum()) -> {f(), f(), f(), f()}
3014
3015              gl:getClipPlane/1 returns in Equation the four  coefficients  of
3016              the plane equation for Plane.
3017
3018              External documentation.
3019
3020       getColorTable(Target :: enum(),
3021                     Format :: enum(),
3022                     Type :: enum(),
3023                     Table :: mem()) ->
3024                        ok
3025
3026              gl:getColorTable/4  returns  in  Table the contents of the color
3027              table specified by Target. No pixel transfer operations are per‐
3028              formed,  but pixel storage modes that are applicable to gl:read‐
3029              Pixels/7 are performed.
3030
3031              External documentation.
3032
3033       getColorTableParameterfv(Target :: enum(), Pname :: enum()) ->
3034                                   {f(), f(), f(), f()}
3035
3036       getColorTableParameteriv(Target :: enum(), Pname :: enum()) ->
3037                                   {i(), i(), i(), i()}
3038
3039              Returns parameters specific to color table Target.
3040
3041              External documentation.
3042
3043       getCompressedTexImage(Target :: enum(), Lod :: i(), Img :: mem()) ->
3044                                ok
3045
3046              gl:getCompressedTexImage/3 and  glGetnCompressedTexImage  return
3047              the compressed texture image associated with Target and Lod into
3048              Pixels. glGetCompressedTextureImage serves the same purpose, but
3049              instead  of taking a texture target, it takes the ID of the tex‐
3050              ture object. Pixels should be an  array  of  BufSize  bytes  for
3051              glGetnCompresedTexImage  and  glGetCompressedTextureImage  func‐
3052              tions, and of ?GL_TEXTURE_COMPRESSED_IMAGE_SIZE bytes in case of
3053              gl:getCompressedTexImage/3.  If the actual data takes less space
3054              than BufSize, the remaining bytes will not  be  touched.  Target
3055              specifies  the texture target, to which the texture the data the
3056              function should extract the data from is bound to. Lod specifies
3057              the level-of-detail number of the desired image.
3058
3059              External documentation.
3060
3061       getCompressedTexImageARB(Target :: enum(),
3062                                Level :: i(),
3063                                Img :: mem()) ->
3064                                   ok
3065
3066              No documentation available.
3067
3068       getConvolutionFilter(Target :: enum(),
3069                            Format :: enum(),
3070                            Type :: enum(),
3071                            Image :: mem()) ->
3072                               ok
3073
3074              gl:getConvolutionFilter/4  returns the current 1D or 2D convolu‐
3075              tion filter kernel as an image. The one- or two-dimensional  im‐
3076              age is placed in Image according to the specifications in Format
3077              and Type. No pixel transfer operations are performed on this im‐
3078              age, but the relevant pixel storage modes are applied.
3079
3080              External documentation.
3081
3082       getConvolutionParameterfv(Target :: enum(), Pname :: enum()) ->
3083                                    {f(), f(), f(), f()}
3084
3085       getConvolutionParameteriv(Target :: enum(), Pname :: enum()) ->
3086                                    {i(), i(), i(), i()}
3087
3088              gl:getConvolutionParameter()  retrieves  convolution parameters.
3089              Target determines which convolution filter is queried. Pname de‐
3090              termines which parameter is returned:
3091
3092              External documentation.
3093
3094       getDebugMessageLog(Count :: i(), BufSize :: i()) ->
3095                             {i(),
3096                              Sources :: [enum()],
3097                              Types :: [enum()],
3098                              Ids :: [i()],
3099                              Severities :: [enum()],
3100                              MessageLog :: string()}
3101
3102              gl:getDebugMessageLog/2  retrieves  messages from the debug mes‐
3103              sage log. A maximum of Count messages  are  retrieved  from  the
3104              log.  If  Sources is not NULL then the source of each message is
3105              written into up to Count elements of the array. If Types is  not
3106              NULL  then  the type of each message is written into up to Count
3107              elements of the array. If Id is not NULL then the identifier  of
3108              each  message is written into up to Count elements of the array.
3109              If Severities is not NULL then the severity of each  message  is
3110              written  into  up  to Count elements of the array. If Lengths is
3111              not NULL then the length of each message is written into  up  to
3112              Count elements of the array.
3113
3114              External documentation.
3115
3116       getError() -> enum()
3117
3118              gl:getError/0  returns  the  value  of  the error flag. Each de‐
3119              tectable error is assigned a numeric  code  and  symbolic  name.
3120              When  an  error occurs, the error flag is set to the appropriate
3121              error code value. No other errors are recorded  until  gl:getEr‐
3122              ror/0 is called, the error code is returned, and the flag is re‐
3123              set  to  ?GL_NO_ERROR.  If  a  call  to  gl:getError/0   returns
3124              ?GL_NO_ERROR,  there has been no detectable error since the last
3125              call to gl:getError/0, or since the GL was initialized.
3126
3127              External documentation.
3128
3129       getFragDataIndex(Program :: i(), Name :: string()) -> i()
3130
3131              gl:getFragDataIndex/2 returns the index of the fragment color to
3132              which  the  variable Name was bound when the program object Pro‐
3133              gram was last linked. If Name is not a varying out  variable  of
3134              Program, or if an error occurs, -1 will be returned.
3135
3136              External documentation.
3137
3138       getFragDataLocation(Program :: i(), Name :: string()) -> i()
3139
3140              gl:getFragDataLocation/2  retrieves  the  assigned  color number
3141              binding for the user-defined varying out variable Name for  pro‐
3142              gram  Program.  Program  must  have previously been linked. Name
3143              must be a null-terminated string. If Name is not the name of  an
3144              active  user-defined varying out fragment shader variable within
3145              Program, -1 will be returned.
3146
3147              External documentation.
3148
3149       getFramebufferAttachmentParameteriv(Target :: enum(),
3150                                           Attachment :: enum(),
3151                                           Pname :: enum()) ->
3152                                              i()
3153
3154              gl:getFramebufferAttachmentParameteriv/3  and   glGetNamedFrame‐
3155              bufferAttachmentParameteriv  return parameters of attachments of
3156              a specified framebuffer object.
3157
3158              External documentation.
3159
3160       getFramebufferParameteriv(Target :: enum(), Pname :: enum()) ->
3161                                    i()
3162
3163              gl:getFramebufferParameteriv/2 and  glGetNamedFramebufferParame‐
3164              teriv query parameters of a specified framebuffer object.
3165
3166              External documentation.
3167
3168       getGraphicsResetStatus() -> enum()
3169
3170              Certain  events  can result in a reset of the GL context. Such a
3171              reset causes all context state to be lost and requires  the  ap‐
3172              plication to recreate all objects in the affected context.
3173
3174              External documentation.
3175
3176       getHandleARB(Pname :: enum()) -> i()
3177
3178              No documentation available.
3179
3180       getHistogram(Target :: enum(),
3181                    Reset :: 0 | 1,
3182                    Format :: enum(),
3183                    Type :: enum(),
3184                    Values :: mem()) ->
3185                       ok
3186
3187              gl:getHistogram/5  returns the current histogram table as a one-
3188              dimensional image with the same width as the histogram. No pixel
3189              transfer operations are performed on this image, but pixel stor‐
3190              age modes that are applicable to 1D images are honored.
3191
3192              External documentation.
3193
3194       getHistogramParameterfv(Target :: enum(), Pname :: enum()) ->
3195                                  {f()}
3196
3197       getHistogramParameteriv(Target :: enum(), Pname :: enum()) ->
3198                                  {i()}
3199
3200              gl:getHistogramParameter() is used to query parameter values for
3201              the current histogram or for a proxy. The histogram state infor‐
3202              mation may be queried by calling gl:getHistogramParameter() with
3203              a Target of ?GL_HISTOGRAM (to obtain information for the current
3204              histogram table) or ?GL_PROXY_HISTOGRAM (to  obtain  information
3205              from  the  most  recent  proxy request) and one of the following
3206              values for the Pname argument:
3207
3208              External documentation.
3209
3210       getImageHandleARB(Texture :: i(),
3211                         Level :: i(),
3212                         Layered :: 0 | 1,
3213                         Layer :: i(),
3214                         Format :: enum()) ->
3215                            i()
3216
3217              No documentation available.
3218
3219       getInfoLogARB(Obj :: i(), MaxLength :: i()) -> string()
3220
3221              No documentation available.
3222
3223       getInternalformativ(Target :: enum(),
3224                           Internalformat :: enum(),
3225                           Pname :: enum(),
3226                           BufSize :: i()) ->
3227                              [i()]
3228
3229              gl:getInternalformativ/4 and gl:getInternalformati64v/4 retrieve
3230              information  about implementation-dependent support for internal
3231              formats. Target indicates the target  with  which  the  internal
3232              format  will  be  used  and  must  be  one  of ?GL_RENDERBUFFER,
3233              ?GL_TEXTURE_2D_MULTISAMPLE, or ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY,
3234              corresponding to usage as a renderbuffer, two-dimensional multi‐
3235              sample texture or two-dimensional multisample array texture, re‐
3236              spectively.
3237
3238              External documentation.
3239
3240       getInternalformati64v(Target :: enum(),
3241                             Internalformat :: enum(),
3242                             Pname :: enum(),
3243                             BufSize :: i()) ->
3244                                [i()]
3245
3246              No documentation available.
3247
3248       getLightfv(Light :: enum(), Pname :: enum()) ->
3249                     {f(), f(), f(), f()}
3250
3251       getLightiv(Light :: enum(), Pname :: enum()) ->
3252                     {i(), i(), i(), i()}
3253
3254              gl:getLight()  returns  in Params the value or values of a light
3255              source parameter. Light names the light and is a  symbolic  name
3256              of  the  form  ?GL_LIGHT i where i ranges from 0 to the value of
3257              ?GL_MAX_LIGHTS - 1. ?GL_MAX_LIGHTS is an  implementation  depen‐
3258              dent  constant  that  is  greater  than or equal to eight. Pname
3259              specifies one of ten light source parameters, again by  symbolic
3260              name.
3261
3262              External documentation.
3263
3264       getMapdv(Target :: enum(), Query :: enum(), V :: mem()) -> ok
3265
3266       getMapfv(Target :: enum(), Query :: enum(), V :: mem()) -> ok
3267
3268       getMapiv(Target :: enum(), Query :: enum(), V :: mem()) -> ok
3269
3270              gl:map1()  and  gl:map2() define evaluators. gl:getMap() returns
3271              evaluator parameters. Target chooses a map, Query selects a spe‐
3272              cific  parameter,  and V points to storage where the values will
3273              be returned.
3274
3275              External documentation.
3276
3277       getMaterialfv(Face :: enum(), Pname :: enum()) ->
3278                        {f(), f(), f(), f()}
3279
3280       getMaterialiv(Face :: enum(), Pname :: enum()) ->
3281                        {i(), i(), i(), i()}
3282
3283              gl:getMaterial() returns in Params the value or values of param‐
3284              eter Pname of material Face. Six parameters are defined:
3285
3286              External documentation.
3287
3288       getMinmax(Target :: enum(),
3289                 Reset :: 0 | 1,
3290                 Format :: enum(),
3291                 Types :: enum(),
3292                 Values :: mem()) ->
3293                    ok
3294
3295              gl:getMinmax/5 returns the accumulated minimum and maximum pixel
3296              values (computed on a per-component basis) in a  one-dimensional
3297              image of width 2. The first set of return values are the minima,
3298              and the second set of return values are the maxima.  The  format
3299              of  the return values is determined by Format, and their type is
3300              determined by Types.
3301
3302              External documentation.
3303
3304       getMinmaxParameterfv(Target :: enum(), Pname :: enum()) -> {f()}
3305
3306       getMinmaxParameteriv(Target :: enum(), Pname :: enum()) -> {i()}
3307
3308              gl:getMinmaxParameter() retrieves  parameters  for  the  current
3309              minmax table by setting Pname to one of the following values:
3310
3311              External documentation.
3312
3313       getMultisamplefv(Pname :: enum(), Index :: i()) -> {f(), f()}
3314
3315              gl:getMultisamplefv/2  queries  the  location of a given sample.
3316              Pname specifies the sample parameter to  retrieve  and  must  be
3317              ?GL_SAMPLE_POSITION.  Index  corresponds to the sample for which
3318              the location should be returned. The sample location is returned
3319              as  two floating-point values in Val[0] and Val[1], each between
3320              0 and 1, corresponding to the X and Y locations respectively  in
3321              the  GL  pixel space of that sample. (0.5, 0.5) this corresponds
3322              to the pixel center. Index must be between zero and the value of
3323              ?GL_SAMPLES minus one.
3324
3325              External documentation.
3326
3327       getObjectParameterfvARB(Obj :: i(), Pname :: enum()) -> f()
3328
3329       getObjectParameterivARB(Obj :: i(), Pname :: enum()) -> i()
3330
3331              No documentation available.
3332
3333       getPixelMapfv(Map :: enum(), Values :: mem()) -> ok
3334
3335       getPixelMapuiv(Map :: enum(), Values :: mem()) -> ok
3336
3337       getPixelMapusv(Map :: enum(), Values :: mem()) -> ok
3338
3339              See  the  gl:pixelMap()  reference page for a description of the
3340              acceptable values for the Map  parameter.  gl:getPixelMap()  re‐
3341              turns  in  Data  the contents of the pixel map specified in Map.
3342              Pixel maps are used during  the  execution  of  gl:readPixels/7,
3343              gl:drawPixels/5,   gl:copyPixels/5,  gl:texImage1D/8,  gl:texIm‐
3344              age2D/9,  gl:texImage3D/10,   gl:texSubImage1D/7,   gl:texSubIm‐
3345              age2D/9, gl:texSubImage3D/11, gl:copyTexImage1D/7, gl:copyTexIm‐
3346              age2D/8,  gl:copyTexSubImage1D/6,  gl:copyTexSubImage2D/8,   and
3347              gl:copyTexSubImage3D/9.  to  map color indices, stencil indices,
3348              color components, and depth components to other values.
3349
3350              External documentation.
3351
3352       getPolygonStipple() -> binary()
3353
3354              gl:getPolygonStipple/0 returns to Pattern a 32×32 polygon  stip‐
3355              ple pattern. The pattern is packed into memory as if gl:readPix‐
3356              els/7 with both height and width of 32, type of ?GL_BITMAP,  and
3357              format  of  ?GL_COLOR_INDEX were called, and the stipple pattern
3358              were stored in an internal  32×32  color  index  buffer.  Unlike
3359              gl:readPixels/7, however, pixel transfer operations (shift, off‐
3360              set, pixel map) are not applied to the returned stipple image.
3361
3362              External documentation.
3363
3364       getProgramiv(Program :: i(), Pname :: enum()) -> i()
3365
3366              gl:getProgram() returns in Params the value of a parameter for a
3367              specific program object. The following parameters are defined:
3368
3369              External documentation.
3370
3371       getProgramBinary(Program :: i(), BufSize :: i()) ->
3372                           {BinaryFormat :: enum(), Binary :: binary()}
3373
3374              gl:getProgramBinary/2  returns  a  binary  representation of the
3375              compiled and linked executable for Program  into  the  array  of
3376              bytes  whose  address is specified in Binary. The maximum number
3377              of bytes that may be written into Binary is  specified  by  Buf‐
3378              Size.  If  the  program  binary  is greater in size than BufSize
3379              bytes, then an error is generated, otherwise the  actual  number
3380              of  bytes  written into Binary is returned in the variable whose
3381              address is given by Length. If Length is ?NULL, then  no  length
3382              is returned.
3383
3384              External documentation.
3385
3386       getProgramEnvParameterdvARB(Target :: enum(), Index :: i()) ->
3387                                      {f(), f(), f(), f()}
3388
3389       getProgramEnvParameterfvARB(Target :: enum(), Index :: i()) ->
3390                                      {f(), f(), f(), f()}
3391
3392              No documentation available.
3393
3394       getProgramInfoLog(Program :: i(), BufSize :: i()) -> string()
3395
3396              gl:getProgramInfoLog/2 returns the information log for the spec‐
3397              ified program object. The information log for a  program  object
3398              is  modified when the program object is linked or validated. The
3399              string that is returned will be null terminated.
3400
3401              External documentation.
3402
3403       getProgramInterfaceiv(Program :: i(),
3404                             ProgramInterface :: enum(),
3405                             Pname :: enum()) ->
3406                                i()
3407
3408              gl:getProgramInterfaceiv/3 queries the property of the interface
3409              identifed  by  ProgramInterface in Program, the property name of
3410              which is given by Pname.
3411
3412              External documentation.
3413
3414       getProgramLocalParameterdvARB(Target :: enum(), Index :: i()) ->
3415                                        {f(), f(), f(), f()}
3416
3417       getProgramLocalParameterfvARB(Target :: enum(), Index :: i()) ->
3418                                        {f(), f(), f(), f()}
3419
3420              No documentation available.
3421
3422       getProgramPipelineiv(Pipeline :: i(), Pname :: enum()) -> i()
3423
3424              gl:getProgramPipelineiv/2 retrieves the value of a  property  of
3425              the  program  pipeline object Pipeline. Pname specifies the name
3426              of the parameter whose value to retrieve. The value of  the  pa‐
3427              rameter  is  written  to  the variable whose address is given by
3428              Params.
3429
3430              External documentation.
3431
3432       getProgramPipelineInfoLog(Pipeline :: i(), BufSize :: i()) ->
3433                                    string()
3434
3435              gl:getProgramPipelineInfoLog/2 retrieves the info  log  for  the
3436              program  pipeline  object  Pipeline. The info log, including its
3437              null terminator, is written into the array of  characters  whose
3438              address  is  given  by InfoLog. The maximum number of characters
3439              that may be written into InfoLog is given by  BufSize,  and  the
3440              actual  number of characters written into InfoLog is returned in
3441              the integer whose address is  given  by  Length.  If  Length  is
3442              ?NULL, no length is returned.
3443
3444              External documentation.
3445
3446       getProgramResourceIndex(Program :: i(),
3447                               ProgramInterface :: enum(),
3448                               Name :: string()) ->
3449                                  i()
3450
3451              gl:getProgramResourceIndex/3  returns the unsigned integer index
3452              assigned to a resource named Name in the interface type Program‐
3453              Interface of program object Program.
3454
3455              External documentation.
3456
3457       getProgramResourceLocation(Program :: i(),
3458                                  ProgramInterface :: enum(),
3459                                  Name :: string()) ->
3460                                     i()
3461
3462              gl:getProgramResourceLocation/3 returns the location assigned to
3463              the variable named Name in interface ProgramInterface of program
3464              object  Program.  Program must be the name of a program that has
3465              been  linked  successfully.  ProgramInterface  must  be  one  of
3466              ?GL_UNIFORM,   ?GL_PROGRAM_INPUT,  ?GL_PROGRAM_OUTPUT,  ?GL_VER‐
3467              TEX_SUBROUTINE_UNIFORM,     ?GL_TESS_CONTROL_SUBROUTINE_UNIFORM,
3468              ?GL_TESS_EVALUATION_SUBROUTINE_UNIFORM,     ?GL_GEOMETRY_SUBROU‐
3469              TINE_UNIFORM, ?GL_FRAGMENT_SUBROUTINE_UNIFORM,  ?GL_COMPUTE_SUB‐
3470              ROUTINE_UNIFORM, or ?GL_TRANSFORM_FEEDBACK_BUFFER.
3471
3472              External documentation.
3473
3474       getProgramResourceLocationIndex(Program :: i(),
3475                                       ProgramInterface :: enum(),
3476                                       Name :: string()) ->
3477                                          i()
3478
3479              gl:getProgramResourceLocationIndex/3  returns the fragment color
3480              index assigned to the variable named Name in interface  Program‐
3481              Interface of program object Program. Program must be the name of
3482              a program that has been  linked  successfully.  ProgramInterface
3483              must be ?GL_PROGRAM_OUTPUT.
3484
3485              External documentation.
3486
3487       getProgramResourceName(Program :: i(),
3488                              ProgramInterface :: enum(),
3489                              Index :: i(),
3490                              BufSize :: i()) ->
3491                                 string()
3492
3493              gl:getProgramResourceName/4  retrieves  the name string assigned
3494              to the single active resource with an index of Index in the  in‐
3495              terface  ProgramInterface  of program object Program. Index must
3496              be less than the number of entries in the active  resource  list
3497              for ProgramInterface.
3498
3499              External documentation.
3500
3501       getProgramStageiv(Program :: i(),
3502                         Shadertype :: enum(),
3503                         Pname :: enum()) ->
3504                            i()
3505
3506              gl:getProgramStage()  queries  a parameter of a shader stage at‐
3507              tached to a program object. Program contains  the  name  of  the
3508              program  to  which  the shader is attached. Shadertype specifies
3509              the stage from which to query  the  parameter.  Pname  specifies
3510              which  parameter  should  be queried. The value or values of the
3511              parameter to be queried is returned in the  variable  whose  ad‐
3512              dress is given in Values.
3513
3514              External documentation.
3515
3516       getProgramStringARB(Target :: enum(),
3517                           Pname :: enum(),
3518                           String :: mem()) ->
3519                              ok
3520
3521              No documentation available.
3522
3523       getQueryiv(Target :: enum(), Pname :: enum()) -> i()
3524
3525              No documentation available.
3526
3527       getQueryBufferObjectiv(Id :: i(),
3528                              Buffer :: i(),
3529                              Pname :: enum(),
3530                              Offset :: i()) ->
3531                                 ok
3532
3533       getQueryBufferObjectuiv(Id :: i(),
3534                               Buffer :: i(),
3535                               Pname :: enum(),
3536                               Offset :: i()) ->
3537                                  ok
3538
3539              No documentation available.
3540
3541       getQueryBufferObjecti64v(Id :: i(),
3542                                Buffer :: i(),
3543                                Pname :: enum(),
3544                                Offset :: i()) ->
3545                                   ok
3546
3547              No documentation available.
3548
3549       getQueryBufferObjectui64v(Id :: i(),
3550                                 Buffer :: i(),
3551                                 Pname :: enum(),
3552                                 Offset :: i()) ->
3553                                    ok
3554
3555              No documentation available.
3556
3557       getQueryIndexediv(Target :: enum(), Index :: i(), Pname :: enum()) ->
3558                            i()
3559
3560              gl:getQueryIndexediv/3 returns in Params a selected parameter of
3561              the indexed query object target specified by Target  and  Index.
3562              Index specifies the index of the query object target and must be
3563              between zero and a target-specific maxiumum.
3564
3565              External documentation.
3566
3567       getQueryObjectiv(Id :: i(), Pname :: enum()) -> i()
3568
3569       getQueryObjectuiv(Id :: i(), Pname :: enum()) -> i()
3570
3571              These commands return a selected parameter of the  query  object
3572              specified  by  Id.  gl:getQueryObject()  returns in Params a se‐
3573              lected parameter of the query object specified  by  Id.  gl:get‐
3574              QueryBufferObject()  returns  in  Buffer a selected parameter of
3575              the query object specified by Id, by writing it to Buffer's data
3576              store at the byte offset specified by Offset.
3577
3578              External documentation.
3579
3580       getQueryObjecti64v(Id :: i(), Pname :: enum()) -> i()
3581
3582              No documentation available.
3583
3584       getQueryObjectui64v(Id :: i(), Pname :: enum()) -> i()
3585
3586              No documentation available.
3587
3588       getRenderbufferParameteriv(Target :: enum(), Pname :: enum()) ->
3589                                     i()
3590
3591              gl:getRenderbufferParameteriv/2 and glGetNamedRenderbufferParam‐
3592              eteriv query parameters of a specified renderbuffer object.
3593
3594              External documentation.
3595
3596       getSamplerParameterIiv(Sampler :: i(), Pname :: enum()) -> [i()]
3597
3598       getSamplerParameterfv(Sampler :: i(), Pname :: enum()) -> [f()]
3599
3600       getSamplerParameteriv(Sampler :: i(), Pname :: enum()) -> [i()]
3601
3602              gl:getSamplerParameter() returns in Params the value  or  values
3603              of the sampler parameter specified as Pname. Sampler defines the
3604              target sampler, and must be the name of an existing sampler  ob‐
3605              ject,  returned  from a previous call to gl:genSamplers/1. Pname
3606              accepts the same symbols as gl:samplerParameter(), with the same
3607              interpretations:
3608
3609              External documentation.
3610
3611       getSamplerParameterIuiv(Sampler :: i(), Pname :: enum()) -> [i()]
3612
3613              No documentation available.
3614
3615       getShaderiv(Shader :: i(), Pname :: enum()) -> i()
3616
3617              gl:getShader()  returns in Params the value of a parameter for a
3618              specific shader object. The following parameters are defined:
3619
3620              External documentation.
3621
3622       getShaderInfoLog(Shader :: i(), BufSize :: i()) -> string()
3623
3624              gl:getShaderInfoLog/2 returns the information log for the speci‐
3625              fied  shader  object. The information log for a shader object is
3626              modified when the shader is compiled. The  string  that  is  re‐
3627              turned will be null terminated.
3628
3629              External documentation.
3630
3631       getShaderPrecisionFormat(Shadertype :: enum(),
3632                                Precisiontype :: enum()) ->
3633                                   {Range :: {i(), i()},
3634                                    Precision :: i()}
3635
3636              gl:getShaderPrecisionFormat/2  retrieves  the  numeric range and
3637              precision for the implementation's representation of  quantities
3638              in  different  numeric formats in specified shader type. Shader‐
3639              Type specifies the type of shader for which the  numeric  preci‐
3640              sion  and  range  is to be retrieved and must be one of ?GL_VER‐
3641              TEX_SHADER or ?GL_FRAGMENT_SHADER. PrecisionType  specifies  the
3642              numeric  format  to  query  and  must  be  one of ?GL_LOW_FLOAT,
3643              ?GL_MEDIUM_FLOAT?GL_HIGH_FLOAT, ?GL_LOW_INT, ?GL_MEDIUM_INT,  or
3644              ?GL_HIGH_INT.
3645
3646              External documentation.
3647
3648       getShaderSource(Shader :: i(), BufSize :: i()) -> string()
3649
3650              gl:getShaderSource/2  returns  the  concatenation  of the source
3651              code strings from the shader object  specified  by  Shader.  The
3652              source code strings for a shader object are the result of a pre‐
3653              vious call to gl:shaderSource/2.  The  string  returned  by  the
3654              function will be null terminated.
3655
3656              External documentation.
3657
3658       getShaderSourceARB(Obj :: i(), MaxLength :: i()) -> string()
3659
3660              No documentation available.
3661
3662       getString(Name :: enum()) -> string()
3663
3664       getStringi(Name :: enum(), Index :: i()) -> string()
3665
3666              gl:getString/1  returns  a pointer to a static string describing
3667              some aspect of the current GL connection. Name can be one of the
3668              following:
3669
3670              External documentation.
3671
3672       getSubroutineIndex(Program :: i(),
3673                          Shadertype :: enum(),
3674                          Name :: string()) ->
3675                             i()
3676
3677              gl:getSubroutineIndex/3  returns  the index of a subroutine uni‐
3678              form within a shader stage attached to a program object. Program
3679              contains  the  name  of  the  program to which the shader is at‐
3680              tached. Shadertype specifies  the  stage  from  which  to  query
3681              shader  subroutine index. Name contains the null-terminated name
3682              of the subroutine uniform whose name to query.
3683
3684              External documentation.
3685
3686       getSubroutineUniformLocation(Program :: i(),
3687                                    Shadertype :: enum(),
3688                                    Name :: string()) ->
3689                                       i()
3690
3691              gl:getSubroutineUniformLocation/3 returns the  location  of  the
3692              subroutine  uniform  variable  Name  in the shader stage of type
3693              Shadertype attached to Program, with behavior otherwise  identi‐
3694              cal to gl:getUniformLocation/2.
3695
3696              External documentation.
3697
3698       getSynciv(Sync :: i(), Pname :: enum(), BufSize :: i()) -> [i()]
3699
3700              gl:getSynciv/3 retrieves properties of a sync object. Sync spec‐
3701              ifies the name of the sync object whose properties to retrieve.
3702
3703              External documentation.
3704
3705       getTexEnvfv(Target :: enum(), Pname :: enum()) ->
3706                      {f(), f(), f(), f()}
3707
3708       getTexEnviv(Target :: enum(), Pname :: enum()) ->
3709                      {i(), i(), i(), i()}
3710
3711              gl:getTexEnv() returns in Params selected values  of  a  texture
3712              environment  that  was specified with gl:texEnv(). Target speci‐
3713              fies a texture environment.
3714
3715              External documentation.
3716
3717       getTexGendv(Coord :: enum(), Pname :: enum()) ->
3718                      {f(), f(), f(), f()}
3719
3720       getTexGenfv(Coord :: enum(), Pname :: enum()) ->
3721                      {f(), f(), f(), f()}
3722
3723       getTexGeniv(Coord :: enum(), Pname :: enum()) ->
3724                      {i(), i(), i(), i()}
3725
3726              gl:getTexGen() returns in Params selected parameters of  a  tex‐
3727              ture  coordinate  generation  function  that was specified using
3728              gl:texGen(). Coord names one of the (s, t, r, q) texture coordi‐
3729              nates,  using  the  symbolic  constant  ?GL_S,  ?GL_T, ?GL_R, or
3730              ?GL_Q.
3731
3732              External documentation.
3733
3734       getTexImage(Target :: enum(),
3735                   Level :: i(),
3736                   Format :: enum(),
3737                   Type :: enum(),
3738                   Pixels :: mem()) ->
3739                      ok
3740
3741              gl:getTexImage/5, glGetnTexImage and glGetTextureImage functions
3742              return  a  texture  image  into Pixels. For gl:getTexImage/5 and
3743              glGetnTexImage, Target specifies whether the desired texture im‐
3744              age   is  one  specified  by  gl:texImage1D/8  (?GL_TEXTURE_1D),
3745              gl:texImage2D/9  (?GL_TEXTURE_1D_ARRAY,   ?GL_TEXTURE_RECTANGLE,
3746              ?GL_TEXTURE_2D  or  any of ?GL_TEXTURE_CUBE_MAP_*), or gl:texIm‐
3747              age3D/10   (?GL_TEXTURE_2D_ARRAY,    ?GL_TEXTURE_3D,    ?GL_TEX‐
3748              TURE_CUBE_MAP_ARRAY).  For  glGetTextureImage, Texture specifies
3749              the texture object name. In addition to types  of  textures  ac‐
3750              cepted by gl:getTexImage/5 and glGetnTexImage, the function also
3751              accepts cube map texture objects (with effective target ?GL_TEX‐
3752              TURE_CUBE_MAP).  Level  specifies  the level-of-detail number of
3753              the desired image. Format and Type specify the format  and  type
3754              of the desired image array. See the reference page for gl:texIm‐
3755              age1D/8 for a description of the acceptable values for the  For‐
3756              mat  and  Type  parameters, respectively. For glGetnTexImage and
3757              glGetTextureImage functions, bufSize tells the size of the  buf‐
3758              fer  to  receive  the  retrieved  pixel data. glGetnTexImage and
3759              glGetTextureImage do not write more than BufSize bytes into Pix‐
3760              els.
3761
3762              External documentation.
3763
3764       getTexLevelParameterfv(Target :: enum(),
3765                              Level :: i(),
3766                              Pname :: enum()) ->
3767                                 {f()}
3768
3769       getTexLevelParameteriv(Target :: enum(),
3770                              Level :: i(),
3771                              Pname :: enum()) ->
3772                                 {i()}
3773
3774              gl:getTexLevelParameterfv/3, gl:getTexLevelParameteriv/3, glGet‐
3775              TextureLevelParameterfv and glGetTextureLevelParameteriv  return
3776              in  Params  texture parameter values for a specific level-of-de‐
3777              tail value, specified as Level. For  the  first  two  functions,
3778              Target   defines  the  target  texture,  either  ?GL_TEXTURE_1D,
3779              ?GL_TEXTURE_2D,      ?GL_TEXTURE_3D,       ?GL_PROXY_TEXTURE_1D,
3780              ?GL_PROXY_TEXTURE_2D,       ?GL_PROXY_TEXTURE_3D,       ?GL_TEX‐
3781              TURE_CUBE_MAP_POSITIVE_X,       ?GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
3782              ?GL_TEXTURE_CUBE_MAP_POSITIVE_Y,      ?GL_TEXTURE_CUBE_MAP_NEGA‐
3783              TIVE_Y,        ?GL_TEXTURE_CUBE_MAP_POSITIVE_Z,         ?GL_TEX‐
3784              TURE_CUBE_MAP_NEGATIVE_Z, or ?GL_PROXY_TEXTURE_CUBE_MAP. The re‐
3785              maining two take a Texture argument which specifies the name  of
3786              the texture object.
3787
3788              External documentation.
3789
3790       getTexParameterIiv(Target :: enum(), Pname :: enum()) ->
3791                             {i(), i(), i(), i()}
3792
3793       getTexParameterfv(Target :: enum(), Pname :: enum()) ->
3794                            {f(), f(), f(), f()}
3795
3796       getTexParameteriv(Target :: enum(), Pname :: enum()) ->
3797                            {i(), i(), i(), i()}
3798
3799              gl:getTexParameter()  and glGetTextureParameter return in Params
3800              the value or values of the texture parameter specified as Pname.
3801              Target  defines  the  target  texture.  ?GL_TEXTURE_1D, ?GL_TEX‐
3802              TURE_2D,    ?GL_TEXTURE_3D,    ?GL_TEXTURE_1D_ARRAY,    ?GL_TEX‐
3803              TURE_2D_ARRAY,    ?GL_TEXTURE_RECTANGLE,   ?GL_TEXTURE_CUBE_MAP,
3804              ?GL_TEXTURE_CUBE_MAP_ARRAY,    ?GL_TEXTURE_2D_MULTISAMPLE,    or
3805              ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY  specify  one-, two-, or three-
3806              dimensional, one-dimensional array, two-dimensional array,  rec‐
3807              tangle, cube-mapped or cube-mapped array, two-dimensional multi‐
3808              sample, or two-dimensional multisample array texturing,  respec‐
3809              tively.  Pname  accepts  the  same symbols as gl:texParameter(),
3810              with the same interpretations:
3811
3812              External documentation.
3813
3814       getTexParameterIuiv(Target :: enum(), Pname :: enum()) ->
3815                              {i(), i(), i(), i()}
3816
3817              No documentation available.
3818
3819       getTransformFeedbackVarying(Program :: i(),
3820                                   Index :: i(),
3821                                   BufSize :: i()) ->
3822                                      {Size :: i(),
3823                                       Type :: enum(),
3824                                       Name :: string()}
3825
3826              Information about the set of varying variables in a linked  pro‐
3827              gram  that will be captured during transform feedback may be re‐
3828              trieved  by  calling  gl:getTransformFeedbackVarying/3.  gl:get‐
3829              TransformFeedbackVarying/3  provides information about the vary‐
3830              ing variable selected by Index. An Index of 0 selects the  first
3831              varying  variable  specified  in  the  Varyings  array passed to
3832              gl:transformFeedbackVaryings/3, and an Index  of  the  value  of
3833              ?GL_TRANSFORM_FEEDBACK_VARYINGS  minus one selects the last such
3834              variable.
3835
3836              External documentation.
3837
3838       getUniformdv(Program :: i(), Location :: i()) -> matrix()
3839
3840       getUniformfv(Program :: i(), Location :: i()) -> matrix()
3841
3842       getUniformiv(Program :: i(), Location :: i()) ->
3843                       {i(),
3844                        i(),
3845                        i(),
3846                        i(),
3847                        i(),
3848                        i(),
3849                        i(),
3850                        i(),
3851                        i(),
3852                        i(),
3853                        i(),
3854                        i(),
3855                        i(),
3856                        i(),
3857                        i(),
3858                        i()}
3859
3860       getUniformuiv(Program :: i(), Location :: i()) ->
3861                        {i(),
3862                         i(),
3863                         i(),
3864                         i(),
3865                         i(),
3866                         i(),
3867                         i(),
3868                         i(),
3869                         i(),
3870                         i(),
3871                         i(),
3872                         i(),
3873                         i(),
3874                         i(),
3875                         i(),
3876                         i()}
3877
3878              gl:getUniform() and glGetnUniform return in Params the  value(s)
3879              of the specified uniform variable. The type of the uniform vari‐
3880              able specified by Location determines the number of  values  re‐
3881              turned.  If  the  uniform variable is defined in the shader as a
3882              boolean, int, or float, a single value will be returned.  If  it
3883              is  defined  as  a vec2, ivec2, or bvec2, two values will be re‐
3884              turned. If it is defined as a vec3, ivec3, or bvec3, three  val‐
3885              ues  will be returned, and so on. To query values stored in uni‐
3886              form variables declared as arrays, call gl:getUniform() for each
3887              element  of  the  array. To query values stored in uniform vari‐
3888              ables declared as  structures,  call  gl:getUniform()  for  each
3889              field  in  the  structure.  The values for uniform variables de‐
3890              clared as a matrix will be returned in column major order.
3891
3892              External documentation.
3893
3894       getUniformfvARB(ProgramObj :: i(), Location :: i()) -> matrix()
3895
3896       getUniformivARB(ProgramObj :: i(), Location :: i()) ->
3897                          {i(),
3898                           i(),
3899                           i(),
3900                           i(),
3901                           i(),
3902                           i(),
3903                           i(),
3904                           i(),
3905                           i(),
3906                           i(),
3907                           i(),
3908                           i(),
3909                           i(),
3910                           i(),
3911                           i(),
3912                           i()}
3913
3914              No documentation available.
3915
3916       getUniformBlockIndex(Program :: i(), UniformBlockName :: string()) ->
3917                               i()
3918
3919              gl:getUniformBlockIndex/2 retrieves the index of a uniform block
3920              within Program.
3921
3922              External documentation.
3923
3924       getUniformIndices(Program :: i(),
3925                         UniformNames :: [unicode:chardata()]) ->
3926                            [i()]
3927
3928              gl:getUniformIndices/2 retrieves the indices of a number of uni‐
3929              forms within Program.
3930
3931              External documentation.
3932
3933       getUniformLocation(Program :: i(), Name :: string()) -> i()
3934
3935              glGetUniformLocation  returns an integer that represents the lo‐
3936              cation  of  a specific uniform variable within a program object.
3937              Name must be a null terminated string  that  contains  no  white
3938              space.  Name  must be an active uniform variable name in Program
3939              that is not a structure, an array of structures, or a  subcompo‐
3940              nent  of  a vector or a matrix. This function returns -1 if Name
3941              does not correspond to an active uniform variable in Program, if
3942              Name  starts with the reserved prefix "gl_", or if Name is asso‐
3943              ciated with an atomic counter or a named uniform block.
3944
3945              External documentation.
3946
3947       getUniformLocationARB(ProgramObj :: i(), Name :: string()) -> i()
3948
3949              No documentation available.
3950
3951       getUniformSubroutineuiv(Shadertype :: enum(), Location :: i()) ->
3952                                  {i(),
3953                                   i(),
3954                                   i(),
3955                                   i(),
3956                                   i(),
3957                                   i(),
3958                                   i(),
3959                                   i(),
3960                                   i(),
3961                                   i(),
3962                                   i(),
3963                                   i(),
3964                                   i(),
3965                                   i(),
3966                                   i(),
3967                                   i()}
3968
3969              gl:getUniformSubroutine() retrieves the value of the  subroutine
3970              uniform  at location Location for shader stage Shadertype of the
3971              current program. Location must be less than the value of ?GL_AC‐
3972              TIVE_SUBROUTINE_UNIFORM_LOCATIONS  for  the  shader currently in
3973              use at shader stage Shadertype. The value of the subroutine uni‐
3974              form is returned in Values.
3975
3976              External documentation.
3977
3978       getUniformi64vARB(Program :: i(), Location :: i()) ->
3979                            {i(),
3980                             i(),
3981                             i(),
3982                             i(),
3983                             i(),
3984                             i(),
3985                             i(),
3986                             i(),
3987                             i(),
3988                             i(),
3989                             i(),
3990                             i(),
3991                             i(),
3992                             i(),
3993                             i(),
3994                             i()}
3995
3996              No documentation available.
3997
3998       getUniformui64vARB(Program :: i(), Location :: i()) ->
3999                             {i(),
4000                              i(),
4001                              i(),
4002                              i(),
4003                              i(),
4004                              i(),
4005                              i(),
4006                              i(),
4007                              i(),
4008                              i(),
4009                              i(),
4010                              i(),
4011                              i(),
4012                              i(),
4013                              i(),
4014                              i()}
4015
4016              No documentation available.
4017
4018       getVertexAttribIiv(Index :: i(), Pname :: enum()) ->
4019                             {i(), i(), i(), i()}
4020
4021       getVertexAttribdv(Index :: i(), Pname :: enum()) ->
4022                            {f(), f(), f(), f()}
4023
4024       getVertexAttribfv(Index :: i(), Pname :: enum()) ->
4025                            {f(), f(), f(), f()}
4026
4027       getVertexAttribiv(Index :: i(), Pname :: enum()) ->
4028                            {i(), i(), i(), i()}
4029
4030              gl:getVertexAttrib()  returns  in  Params the value of a generic
4031              vertex attribute parameter. The generic vertex attribute  to  be
4032              queried  is  specified by Index, and the parameter to be queried
4033              is specified by Pname.
4034
4035              External documentation.
4036
4037       getVertexAttribIuiv(Index :: i(), Pname :: enum()) ->
4038                              {i(), i(), i(), i()}
4039
4040              No documentation available.
4041
4042       getVertexAttribLdv(Index :: i(), Pname :: enum()) ->
4043                             {f(), f(), f(), f()}
4044
4045              No documentation available.
4046
4047       hint(Target :: enum(), Mode :: enum()) -> ok
4048
4049              Certain aspects of GL behavior, when there is room for interpre‐
4050              tation,  can  be controlled with hints. A hint is specified with
4051              two arguments. Target is a symbolic constant indicating the  be‐
4052              havior  to  be controlled, and Mode is another symbolic constant
4053              indicating the desired behavior. The initial value for each Tar‐
4054              get is ?GL_DONT_CARE. Mode can be one of the following:
4055
4056              External documentation.
4057
4058       histogram(Target :: enum(),
4059                 Width :: i(),
4060                 Internalformat :: enum(),
4061                 Sink :: 0 | 1) ->
4062                    ok
4063
4064              When  ?GL_HISTOGRAM  is  enabled, RGBA color components are con‐
4065              verted to histogram table  indices  by  clamping  to  the  range
4066              [0,1],  multiplying  by  the  width  of the histogram table, and
4067              rounding to the nearest integer. The table entries  selected  by
4068              the  RGBA  indices are then incremented. (If the internal format
4069              of the histogram table includes luminance, then  the  index  de‐
4070              rived  from the R color component determines the luminance table
4071              entry to be incremented.) If a histogram table entry  is  incre‐
4072              mented  beyond  its  maximum value, then its value becomes unde‐
4073              fined. (This is not an error.)
4074
4075              External documentation.
4076
4077       indexd(C :: f()) -> ok
4078
4079       indexdv(X1 :: {C :: f()}) -> ok
4080
4081       indexf(C :: f()) -> ok
4082
4083       indexfv(X1 :: {C :: f()}) -> ok
4084
4085       indexi(C :: i()) -> ok
4086
4087       indexiv(X1 :: {C :: i()}) -> ok
4088
4089       indexs(C :: i()) -> ok
4090
4091       indexsv(X1 :: {C :: i()}) -> ok
4092
4093       indexub(C :: i()) -> ok
4094
4095       indexubv(X1 :: {C :: i()}) -> ok
4096
4097              gl:index() updates the current (single-valued) color  index.  It
4098              takes one argument, the new value for the current color index.
4099
4100              External documentation.
4101
4102       indexMask(Mask :: i()) -> ok
4103
4104              gl:indexMask/1  controls  the  writing of individual bits in the
4105              color index buffers. The least significant n bits of Mask, where
4106              n is the number of bits in a color index buffer, specify a mask.
4107              Where a 1 (one) appears in the mask, it's possible to  write  to
4108              the  corresponding  bit  in the color index buffer (or buffers).
4109              Where a 0 (zero) appears, the corresponding  bit  is  write-pro‐
4110              tected.
4111
4112              External documentation.
4113
4114       indexPointer(Type :: enum(),
4115                    Stride :: i(),
4116                    Ptr :: offset() | mem()) ->
4117                       ok
4118
4119              gl:indexPointer/3  specifies  the location and data format of an
4120              array of color indexes to use when rendering. Type specifies the
4121              data  type  of  each  color  index and Stride specifies the byte
4122              stride from one color index to the next, allowing  vertices  and
4123              attributes  to  be packed into a single array or stored in sepa‐
4124              rate arrays.
4125
4126              External documentation.
4127
4128       initNames() -> ok
4129
4130              The name stack is used during selection mode to  allow  sets  of
4131              rendering  commands to be uniquely identified. It consists of an
4132              ordered set of unsigned integers. gl:initNames/0 causes the name
4133              stack to be initialized to its default empty state.
4134
4135              External documentation.
4136
4137       interleavedArrays(Format :: enum(),
4138                         Stride :: i(),
4139                         Pointer :: offset() | mem()) ->
4140                            ok
4141
4142              gl:interleavedArrays/3  lets  you  specify and enable individual
4143              color, normal, texture and vertex arrays whose elements are part
4144              of  a  larger aggregate array element. For some implementations,
4145              this is more efficient than specifying the arrays separately.
4146
4147              External documentation.
4148
4149       invalidateBufferData(Buffer :: i()) -> ok
4150
4151              gl:invalidateBufferData/1 invalidates all of the content of  the
4152              data  store  of a buffer object. After invalidation, the content
4153              of the buffer's data store becomes undefined.
4154
4155              External documentation.
4156
4157       invalidateBufferSubData(Buffer :: i(),
4158                               Offset :: i(),
4159                               Length :: i()) ->
4160                                  ok
4161
4162              gl:invalidateBufferSubData/3 invalidates all or part of the con‐
4163              tent  of  the data store of a buffer object. After invalidation,
4164              the content of the specified range of the  buffer's  data  store
4165              becomes undefined. The start of the range is given by Offset and
4166              its size is given by Length,  both  measured  in  basic  machine
4167              units.
4168
4169              External documentation.
4170
4171       invalidateFramebuffer(Target :: enum(), Attachments :: [enum()]) ->
4172                                ok
4173
4174              gl:invalidateFramebuffer/2  and glInvalidateNamedFramebufferData
4175              invalidate the entire contents of a specified set of attachments
4176              of a framebuffer.
4177
4178              External documentation.
4179
4180       invalidateSubFramebuffer(Target :: enum(),
4181                                Attachments :: [enum()],
4182                                X :: i(),
4183                                Y :: i(),
4184                                Width :: i(),
4185                                Height :: i()) ->
4186                                   ok
4187
4188              gl:invalidateSubFramebuffer/6  and glInvalidateNamedFramebuffer‐
4189              SubData invalidate the contents of a specified region of a spec‐
4190              ified set of attachments of a framebuffer.
4191
4192              External documentation.
4193
4194       invalidateTexImage(Texture :: i(), Level :: i()) -> ok
4195
4196              gl:invalidateTexSubImage/8  invalidates  all of a texture image.
4197              Texture and Level indicated which texture image is being invali‐
4198              dated.  After  this command, data in the texture image has unde‐
4199              fined values.
4200
4201              External documentation.
4202
4203       invalidateTexSubImage(Texture, Level, Xoffset, Yoffset, Zoffset,
4204                             Width, Height, Depth) ->
4205                                ok
4206
4207              Types:
4208
4209                 Texture = Level = Xoffset =  Yoffset  =  Zoffset  =  Width  =
4210                 Height = Depth = i()
4211
4212              gl:invalidateTexSubImage/8  invalidates all or part of a texture
4213              image. Texture and Level indicated which texture image is  being
4214              invalidated. After this command, data in that subregion have un‐
4215              defined values. Xoffset, Yoffset, Zoffset,  Width,  Height,  and
4216              Depth  are  interpreted  as they are in gl:texSubImage3D/11. For
4217              texture targets that don't have certain dimensions, this command
4218              treats  those  dimensions as having a size of 1. For example, to
4219              invalidate a portion of a two- dimensional texture, the applica‐
4220              tion  would  use  Zoffset  equal to zero and Depth equal to one.
4221              Cube map textures are treated as an array of six slices  in  the
4222              z-dimension, where a value of Zoffset is interpreted as specify‐
4223              ing face ?GL_TEXTURE_CUBE_MAP_POSITIVE_X + Zoffset.
4224
4225              External documentation.
4226
4227       isBuffer(Buffer :: i()) -> 0 | 1
4228
4229              gl:isBuffer/1 returns ?GL_TRUE if Buffer is currently  the  name
4230              of  a  buffer  object. If Buffer is zero, or is a non-zero value
4231              that is not currently the name of a buffer object, or if an  er‐
4232              ror occurs, gl:isBuffer/1 returns ?GL_FALSE.
4233
4234              External documentation.
4235
4236       isEnabled(Cap :: enum()) -> 0 | 1
4237
4238              gl:isEnabled/1  returns ?GL_TRUE if Cap is an enabled capability
4239              and returns ?GL_FALSE otherwise. Boolean states that are indexed
4240              may  be  tested with gl:isEnabledi/2. For gl:isEnabledi/2, Index
4241              specifies the index of the capability to test. Index must be be‐
4242              tween  zero  and the count of indexed capabilities for Cap. Ini‐
4243              tially  all  capabilities  except   ?GL_DITHER   are   disabled;
4244              ?GL_DITHER is initially enabled.
4245
4246              External documentation.
4247
4248       isEnabledi(Target :: enum(), Index :: i()) -> 0 | 1
4249
4250              No documentation available.
4251
4252       isFramebuffer(Framebuffer :: i()) -> 0 | 1
4253
4254              gl:isFramebuffer/1  returns ?GL_TRUE if Framebuffer is currently
4255              the name of a framebuffer object. If Framebuffer is zero, or  if
4256              ?framebuffer  is  not the name of a framebuffer object, or if an
4257              error occurs, gl:isFramebuffer/1 returns  ?GL_FALSE.  If  Frame‐
4258              buffer  is  a name returned by gl:genFramebuffers/1, by that has
4259              not yet been bound through a call to gl:bindFramebuffer/2,  then
4260              the  name is not a framebuffer object and gl:isFramebuffer/1 re‐
4261              turns ?GL_FALSE.
4262
4263              External documentation.
4264
4265       isImageHandleResidentARB(Handle :: i()) -> 0 | 1
4266
4267              No documentation available.
4268
4269       isList(List :: i()) -> 0 | 1
4270
4271              gl:isList/1 returns ?GL_TRUE if List is the name  of  a  display
4272              list and returns ?GL_FALSE if it is not, or if an error occurs.
4273
4274              External documentation.
4275
4276       isNamedStringARB(Name :: string()) -> 0 | 1
4277
4278              No documentation available.
4279
4280       isProgram(Program :: i()) -> 0 | 1
4281
4282              gl:isProgram/1 returns ?GL_TRUE if Program is the name of a pro‐
4283              gram object previously created with gl:createProgram/0  and  not
4284              yet  deleted  with  gl:deleteProgram/1.  If Program is zero or a
4285              non-zero value that is not the name of a program object,  or  if
4286              an error occurs, gl:isProgram/1 returns ?GL_FALSE.
4287
4288              External documentation.
4289
4290       isProgramPipeline(Pipeline :: i()) -> 0 | 1
4291
4292              gl:isProgramPipeline/1 returns ?GL_TRUE if Pipeline is currently
4293              the name of a program pipeline object. If Pipeline is  zero,  or
4294              if ?pipeline is not the name of a program pipeline object, or if
4295              an error occurs, gl:isProgramPipeline/1  returns  ?GL_FALSE.  If
4296              Pipeline  is  a  name  returned by gl:genProgramPipelines/1, but
4297              that has not yet  been  bound  through  a  call  to  gl:bindPro‐
4298              gramPipeline/1,  then  the name is not a program pipeline object
4299              and gl:isProgramPipeline/1 returns ?GL_FALSE.
4300
4301              External documentation.
4302
4303       isQuery(Id :: i()) -> 0 | 1
4304
4305              gl:isQuery/1 returns ?GL_TRUE if Id is currently the name  of  a
4306              query  object. If Id is zero, or is a non-zero value that is not
4307              currently the name of a query object, or  if  an  error  occurs,
4308              gl:isQuery/1 returns ?GL_FALSE.
4309
4310              External documentation.
4311
4312       isRenderbuffer(Renderbuffer :: i()) -> 0 | 1
4313
4314              gl:isRenderbuffer/1  returns  ?GL_TRUE  if  Renderbuffer is cur‐
4315              rently the name of a renderbuffer  object.  If  Renderbuffer  is
4316              zero,  or  if Renderbuffer is not the name of a renderbuffer ob‐
4317              ject,  or  if  an  error  occurs,  gl:isRenderbuffer/1   returns
4318              ?GL_FALSE.  If  Renderbuffer is a name returned by gl:genRender‐
4319              buffers/1, by that has not yet been  bound  through  a  call  to
4320              gl:bindRenderbuffer/2  or gl:framebufferRenderbuffer/4, then the
4321              name is not a renderbuffer object  and  gl:isRenderbuffer/1  re‐
4322              turns ?GL_FALSE.
4323
4324              External documentation.
4325
4326       isSampler(Sampler :: i()) -> 0 | 1
4327
4328              gl:isSampler/1 returns ?GL_TRUE if Id is currently the name of a
4329              sampler object. If Id is zero, or is a non-zero  value  that  is
4330              not  currently  the name of a sampler object, or if an error oc‐
4331              curs, gl:isSampler/1 returns ?GL_FALSE.
4332
4333              External documentation.
4334
4335       isShader(Shader :: i()) -> 0 | 1
4336
4337              gl:isShader/1 returns ?GL_TRUE if Shader is the name of a shader
4338              object  previously  created  with  gl:createShader/1 and not yet
4339              deleted with gl:deleteShader/1. If Shader is zero or a  non-zero
4340              value  that  is  not the name of a shader object, or if an error
4341              occurs, glIsShader  returns ?GL_FALSE.
4342
4343              External documentation.
4344
4345       isSync(Sync :: i()) -> 0 | 1
4346
4347              gl:isSync/1 returns ?GL_TRUE if Sync is currently the name of  a
4348              sync  object. If Sync is not the name of a sync object, or if an
4349              error occurs, gl:isSync/1 returns ?GL_FALSE. Note that  zero  is
4350              not the name of a sync object.
4351
4352              External documentation.
4353
4354       isTexture(Texture :: i()) -> 0 | 1
4355
4356              gl:isTexture/1 returns ?GL_TRUE if Texture is currently the name
4357              of a texture. If Texture is zero, or is a non-zero value that is
4358              not  currently  the  name  of  a texture, or if an error occurs,
4359              gl:isTexture/1 returns ?GL_FALSE.
4360
4361              External documentation.
4362
4363       isTextureHandleResidentARB(Handle :: i()) -> 0 | 1
4364
4365              No documentation available.
4366
4367       isTransformFeedback(Id :: i()) -> 0 | 1
4368
4369              gl:isTransformFeedback/1 returns ?GL_TRUE if Id is currently the
4370              name of a transform feedback object. If Id is zero, or if ?id is
4371              not the name of a transform feedback object, or if an error  oc‐
4372              curs,  gl:isTransformFeedback/1  returns  ?GL_FALSE.  If Id is a
4373              name returned by gl:genTransformFeedbacks/1, but  that  has  not
4374              yet  been  bound  through  a call to gl:bindTransformFeedback/2,
4375              then the name is not a transform feedback object and gl:isTrans‐
4376              formFeedback/1 returns ?GL_FALSE.
4377
4378              External documentation.
4379
4380       isVertexArray(Array :: i()) -> 0 | 1
4381
4382              gl:isVertexArray/1  returns  ?GL_TRUE  if Array is currently the
4383              name of a vertex array object. If Array is zero, or if Array  is
4384              not  the  name  of a vertex array object, or if an error occurs,
4385              gl:isVertexArray/1 returns ?GL_FALSE. If Array  is  a  name  re‐
4386              turned  by  gl:genVertexArrays/1, by that has not yet been bound
4387              through a call to gl:bindVertexArray/1, then the name is  not  a
4388              vertex array object and gl:isVertexArray/1 returns ?GL_FALSE.
4389
4390              External documentation.
4391
4392       lightf(Light :: enum(), Pname :: enum(), Param :: f()) -> ok
4393
4394       lightfv(Light :: enum(), Pname :: enum(), Params :: tuple()) -> ok
4395
4396       lighti(Light :: enum(), Pname :: enum(), Param :: i()) -> ok
4397
4398       lightiv(Light :: enum(), Pname :: enum(), Params :: tuple()) -> ok
4399
4400              gl:light()  sets  the  values of individual light source parame‐
4401              ters. Light names the light and is a symbolic name of  the  form
4402              ?GL_LIGHT   i,   where   i   ranges  from  0  to  the  value  of
4403              ?GL_MAX_LIGHTS - 1. Pname specifies one of ten light source  pa‐
4404              rameters,  again  by  symbolic  name.  Params is either a single
4405              value or a pointer to an array that contains the new values.
4406
4407              External documentation.
4408
4409       lightModelf(Pname :: enum(), Param :: f()) -> ok
4410
4411       lightModelfv(Pname :: enum(), Params :: tuple()) -> ok
4412
4413       lightModeli(Pname :: enum(), Param :: i()) -> ok
4414
4415       lightModeliv(Pname :: enum(), Params :: tuple()) -> ok
4416
4417              gl:lightModel() sets the lighting model parameter. Pname names a
4418              parameter and Params gives the new value. There are three light‐
4419              ing model parameters:
4420
4421              External documentation.
4422
4423       lineStipple(Factor :: i(), Pattern :: i()) -> ok
4424
4425              Line stippling masks out certain fragments produced by  rasteri‐
4426              zation;  those  fragments  will  not  be  drawn.  The masking is
4427              achieved by using three parameters: the 16-bit line stipple pat‐
4428              tern  Pattern,  the  repeat count Factor, and an integer stipple
4429              counter s.
4430
4431              External documentation.
4432
4433       lineWidth(Width :: f()) -> ok
4434
4435              gl:lineWidth/1 specifies the rasterized width  of  both  aliased
4436              and  antialiased lines. Using a line width other than 1 has dif‐
4437              ferent effects, depending on whether line  antialiasing  is  en‐
4438              abled. To enable and disable line antialiasing, call gl:enable/1
4439              and gl:disable/1 with argument ?GL_LINE_SMOOTH. Line  antialias‐
4440              ing is initially disabled.
4441
4442              External documentation.
4443
4444       linkProgram(Program :: i()) -> ok
4445
4446              gl:linkProgram/1  links the program object specified by Program.
4447              If any shader objects of type ?GL_VERTEX_SHADER are attached  to
4448              Program, they will be used to create an executable that will run
4449              on the programmable vertex processor. If any shader  objects  of
4450              type  ?GL_GEOMETRY_SHADER  are attached to Program, they will be
4451              used to create an executable that will run on  the  programmable
4452              geometry  processor.  If  any  shader  objects of type ?GL_FRAG‐
4453              MENT_SHADER are attached to Program, they will be used to create
4454              an executable that will run on the programmable fragment proces‐
4455              sor.
4456
4457              External documentation.
4458
4459       linkProgramARB(ProgramObj :: i()) -> ok
4460
4461              No documentation available.
4462
4463       listBase(Base :: i()) -> ok
4464
4465              gl:callLists/1 specifies an array of offsets. Display-list names
4466              are  generated  by adding Base to each offset. Names that refer‐
4467              ence valid display lists are executed; the others are ignored.
4468
4469              External documentation.
4470
4471       loadIdentity() -> ok
4472
4473              gl:loadIdentity/0 replaces the current matrix with the  identity
4474              matrix. It is semantically equivalent to calling gl:loadMatrix()
4475              with the identity matrix
4476
4477              External documentation.
4478
4479       loadMatrixd(M :: matrix()) -> ok
4480
4481       loadMatrixf(M :: matrix()) -> ok
4482
4483              gl:loadMatrix() replaces the current matrix with the  one  whose
4484              elements  are  specified by M. The current matrix is the projec‐
4485              tion matrix, modelview matrix, or texture matrix,  depending  on
4486              the current matrix mode (see gl:matrixMode/1).
4487
4488              External documentation.
4489
4490       loadName(Name :: i()) -> ok
4491
4492              The  name  stack  is used during selection mode to allow sets of
4493              rendering commands to be uniquely identified. It consists of  an
4494              ordered set of unsigned integers and is initially empty.
4495
4496              External documentation.
4497
4498       loadTransposeMatrixd(M :: matrix()) -> ok
4499
4500       loadTransposeMatrixf(M :: matrix()) -> ok
4501
4502              gl:loadTransposeMatrix()  replaces  the  current matrix with the
4503              one whose elements are specified by M. The current matrix is the
4504              projection  matrix, modelview matrix, or texture matrix, depend‐
4505              ing on the current matrix mode (see gl:matrixMode/1).
4506
4507              External documentation.
4508
4509       loadTransposeMatrixdARB(M :: matrix()) -> ok
4510
4511       loadTransposeMatrixfARB(M :: matrix()) -> ok
4512
4513              No documentation available.
4514
4515       logicOp(Opcode :: enum()) -> ok
4516
4517              gl:logicOp/1 specifies a logical operation that,  when  enabled,
4518              is applied between the incoming RGBA color and the RGBA color at
4519              the corresponding location in the frame  buffer.  To  enable  or
4520              disable the logical operation, call gl:enable/1 and gl:disable/1
4521              using the  symbolic  constant  ?GL_COLOR_LOGIC_OP.  The  initial
4522              value is disabled.
4523
4524              External documentation.
4525
4526       makeImageHandleNonResidentARB(Handle :: i()) -> ok
4527
4528              No documentation available.
4529
4530       makeImageHandleResidentARB(Handle :: i(), Access :: enum()) -> ok
4531
4532              No documentation available.
4533
4534       makeTextureHandleNonResidentARB(Handle :: i()) -> ok
4535
4536              No documentation available.
4537
4538       makeTextureHandleResidentARB(Handle :: i()) -> ok
4539
4540              No documentation available.
4541
4542       map1d(Target :: enum(),
4543             U1 :: f(),
4544             U2 :: f(),
4545             Stride :: i(),
4546             Order :: i(),
4547             Points :: binary()) ->
4548                ok
4549
4550       map1f(Target :: enum(),
4551             U1 :: f(),
4552             U2 :: f(),
4553             Stride :: i(),
4554             Order :: i(),
4555             Points :: binary()) ->
4556                ok
4557
4558       map2d(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder,
4559             Points) ->
4560                ok
4561
4562       map2f(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder,
4563             Points) ->
4564                ok
4565
4566              Types:
4567
4568                 Target = enum()
4569                 U1 = U2 = f()
4570                 Ustride = Uorder = i()
4571                 V1 = V2 = f()
4572                 Vstride = Vorder = i()
4573                 Points = binary()
4574
4575              No documentation available.
4576
4577       mapGrid1d(Un :: i(), U1 :: f(), U2 :: f()) -> ok
4578
4579       mapGrid1f(Un :: i(), U1 :: f(), U2 :: f()) -> ok
4580
4581       mapGrid2d(Un :: i(),
4582                 U1 :: f(),
4583                 U2 :: f(),
4584                 Vn :: i(),
4585                 V1 :: f(),
4586                 V2 :: f()) ->
4587                    ok
4588
4589       mapGrid2f(Un :: i(),
4590                 U1 :: f(),
4591                 U2 :: f(),
4592                 Vn :: i(),
4593                 V1 :: f(),
4594                 V2 :: f()) ->
4595                    ok
4596
4597              gl:mapGrid()  and gl:evalMesh() are used together to efficiently
4598              generate and evaluate a series of evenly-spaced map domain  val‐
4599              ues. gl:evalMesh() steps through the integer domain of a one- or
4600              two-dimensional grid, whose range is the domain of  the  evalua‐
4601              tion maps specified by gl:map1() and gl:map2().
4602
4603              External documentation.
4604
4605       materialf(Face :: enum(), Pname :: enum(), Param :: f()) -> ok
4606
4607       materialfv(Face :: enum(), Pname :: enum(), Params :: tuple()) ->
4608                     ok
4609
4610       materiali(Face :: enum(), Pname :: enum(), Param :: i()) -> ok
4611
4612       materialiv(Face :: enum(), Pname :: enum(), Params :: tuple()) ->
4613                     ok
4614
4615              gl:material()  assigns  values to material parameters. There are
4616              two matched sets of material parameters. One,  the  front-facing
4617              set,  is  used to shade points, lines, bitmaps, and all polygons
4618              (when two-sided lighting  is  disabled),  or  just  front-facing
4619              polygons  (when  two-sided  lighting is enabled). The other set,
4620              back-facing, is used to shade  back-facing  polygons  only  when
4621              two-sided lighting is enabled. Refer to the gl:lightModel() ref‐
4622              erence page for details concerning one- and  two-sided  lighting
4623              calculations.
4624
4625              External documentation.
4626
4627       matrixIndexubvARB(Indices :: [i()]) -> ok
4628
4629       matrixIndexuivARB(Indices :: [i()]) -> ok
4630
4631       matrixIndexusvARB(Indices :: [i()]) -> ok
4632
4633              No documentation available.
4634
4635       matrixMode(Mode :: enum()) -> ok
4636
4637              gl:matrixMode/1  sets  the  current matrix mode. Mode can assume
4638              one of four values:
4639
4640              External documentation.
4641
4642       maxShaderCompilerThreadsARB(Count :: i()) -> ok
4643
4644              No documentation available.
4645
4646       maxShaderCompilerThreadsKHR(Count :: i()) -> ok
4647
4648              No documentation available.
4649
4650       memoryBarrier(Barriers :: i()) -> ok
4651
4652              gl:memoryBarrier/1 defines a barrier ordering the memory  trans‐
4653              actions issued prior to the command relative to those issued af‐
4654              ter the barrier. For  the  purposes  of  this  ordering,  memory
4655              transactions performed by shaders are considered to be issued by
4656              the rendering  command  that  triggered  the  execution  of  the
4657              shader.  Barriers is a bitfield indicating the set of operations
4658              that are synchronized with shader stores; the bits used in  Bar‐
4659              riers are as follows:
4660
4661              External documentation.
4662
4663       memoryBarrierByRegion(Barriers :: i()) -> ok
4664
4665              No documentation available.
4666
4667       minSampleShading(Value :: f()) -> ok
4668
4669              gl:minSampleShading/1  specifies  the  rate at which samples are
4670              shaded within a covered pixel. Sample-rate shading is enabled by
4671              calling  gl:enable/1  with  the parameter ?GL_SAMPLE_SHADING. If
4672              ?GL_MULTISAMPLE or ?GL_SAMPLE_SHADING is disabled, sample  shad‐
4673              ing  has no effect. Otherwise, an implementation must provide at
4674              least as many unique color values for each covered  fragment  as
4675              specified  by  Value times Samples where Samples is the value of
4676              ?GL_SAMPLES for the current framebuffer. At least 1  sample  for
4677              each covered fragment is generated.
4678
4679              External documentation.
4680
4681       minmax(Target :: enum(), Internalformat :: enum(), Sink :: 0 | 1) ->
4682                 ok
4683
4684              When ?GL_MINMAX is enabled, the RGBA components of incoming pix‐
4685              els are compared to the minimum and maximum values for each com‐
4686              ponent,  which  are stored in the two-element minmax table. (The
4687              first element stores the minima, and the second  element  stores
4688              the  maxima.)  If  a  pixel component is greater than the corre‐
4689              sponding component in the maximum element, then the maximum ele‐
4690              ment  is updated with the pixel component value. If a pixel com‐
4691              ponent is less than the corresponding component in  the  minimum
4692              element, then the minimum element is updated with the pixel com‐
4693              ponent value. (In both cases, if the internal format of the min‐
4694              max  table includes luminance, then the R color component of in‐
4695              coming pixels is used for comparison.) The contents of the  min‐
4696              max table may be retrieved at a later time by calling gl:getMin‐
4697              max/5. The minmax operation is enabled or  disabled  by  calling
4698              gl:enable/1  or  gl:disable/1, respectively, with an argument of
4699              ?GL_MINMAX.
4700
4701              External documentation.
4702
4703       multMatrixd(M :: matrix()) -> ok
4704
4705       multMatrixf(M :: matrix()) -> ok
4706
4707              gl:multMatrix() multiplies the current matrix with the one spec‐
4708              ified using M, and replaces the current matrix with the product.
4709
4710              External documentation.
4711
4712       multTransposeMatrixd(M :: matrix()) -> ok
4713
4714       multTransposeMatrixf(M :: matrix()) -> ok
4715
4716              gl:multTransposeMatrix()  multiplies the current matrix with the
4717              one specified using M, and replaces the current matrix with  the
4718              product.
4719
4720              External documentation.
4721
4722       multTransposeMatrixdARB(M :: matrix()) -> ok
4723
4724       multTransposeMatrixfARB(M :: matrix()) -> ok
4725
4726              No documentation available.
4727
4728       multiDrawArrays(Mode :: enum(),
4729                       First :: [integer()] | mem(),
4730                       Count :: [integer()] | mem()) ->
4731                          ok
4732
4733              gl:multiDrawArrays/3 specifies multiple sets of geometric primi‐
4734              tives with very few subroutine calls. Instead of  calling  a  GL
4735              procedure  to pass each individual vertex, normal, texture coor‐
4736              dinate, edge flag, or color, you can prespecify separate  arrays
4737              of vertices, normals, and colors and use them to construct a se‐
4738              quence of primitives with a single call to gl:multiDrawArrays/3.
4739
4740              External documentation.
4741
4742       multiDrawArraysIndirect(Mode :: enum(),
4743                               Indirect :: offset() | mem(),
4744                               Drawcount :: i(),
4745                               Stride :: i()) ->
4746                                  ok
4747
4748              gl:multiDrawArraysIndirect/4 specifies multiple geometric primi‐
4749              tives  with  very  few subroutine calls. gl:multiDrawArraysIndi‐
4750              rect/4 behaves similarly to a multitude of calls  to  gl:drawAr‐
4751              raysInstancedBaseInstance/5, execept that the parameters to each
4752              call to gl:drawArraysInstancedBaseInstance/5 are  stored  in  an
4753              array  in  memory at the address given by Indirect, separated by
4754              the stride, in basic machine  units,  specified  by  Stride.  If
4755              Stride  is  zero, then the array is assumed to be tightly packed
4756              in memory.
4757
4758              External documentation.
4759
4760       multiDrawArraysIndirectCount(Mode, Indirect, Drawcount,
4761                                    Maxdrawcount, Stride) ->
4762                                       ok
4763
4764              Types:
4765
4766                 Mode = enum()
4767                 Indirect = offset() | mem()
4768                 Drawcount = Maxdrawcount = Stride = i()
4769
4770              No documentation available.
4771
4772       multiTexCoord1d(Target :: enum(), S :: f()) -> ok
4773
4774       multiTexCoord1dv(Target :: enum(), X2 :: {S :: f()}) -> ok
4775
4776       multiTexCoord1f(Target :: enum(), S :: f()) -> ok
4777
4778       multiTexCoord1fv(Target :: enum(), X2 :: {S :: f()}) -> ok
4779
4780       multiTexCoord1i(Target :: enum(), S :: i()) -> ok
4781
4782       multiTexCoord1iv(Target :: enum(), X2 :: {S :: i()}) -> ok
4783
4784       multiTexCoord1s(Target :: enum(), S :: i()) -> ok
4785
4786       multiTexCoord1sv(Target :: enum(), X2 :: {S :: i()}) -> ok
4787
4788       multiTexCoord2d(Target :: enum(), S :: f(), T :: f()) -> ok
4789
4790       multiTexCoord2dv(Target :: enum(), X2 :: {S :: f(), T :: f()}) ->
4791                           ok
4792
4793       multiTexCoord2f(Target :: enum(), S :: f(), T :: f()) -> ok
4794
4795       multiTexCoord2fv(Target :: enum(), X2 :: {S :: f(), T :: f()}) ->
4796                           ok
4797
4798       multiTexCoord2i(Target :: enum(), S :: i(), T :: i()) -> ok
4799
4800       multiTexCoord2iv(Target :: enum(), X2 :: {S :: i(), T :: i()}) ->
4801                           ok
4802
4803       multiTexCoord2s(Target :: enum(), S :: i(), T :: i()) -> ok
4804
4805       multiTexCoord2sv(Target :: enum(), X2 :: {S :: i(), T :: i()}) ->
4806                           ok
4807
4808       multiTexCoord3d(Target :: enum(), S :: f(), T :: f(), R :: f()) ->
4809                          ok
4810
4811       multiTexCoord3dv(Target :: enum(),
4812                        X2 :: {S :: f(), T :: f(), R :: f()}) ->
4813                           ok
4814
4815       multiTexCoord3f(Target :: enum(), S :: f(), T :: f(), R :: f()) ->
4816                          ok
4817
4818       multiTexCoord3fv(Target :: enum(),
4819                        X2 :: {S :: f(), T :: f(), R :: f()}) ->
4820                           ok
4821
4822       multiTexCoord3i(Target :: enum(), S :: i(), T :: i(), R :: i()) ->
4823                          ok
4824
4825       multiTexCoord3iv(Target :: enum(),
4826                        X2 :: {S :: i(), T :: i(), R :: i()}) ->
4827                           ok
4828
4829       multiTexCoord3s(Target :: enum(), S :: i(), T :: i(), R :: i()) ->
4830                          ok
4831
4832       multiTexCoord3sv(Target :: enum(),
4833                        X2 :: {S :: i(), T :: i(), R :: i()}) ->
4834                           ok
4835
4836       multiTexCoord4d(Target :: enum(),
4837                       S :: f(),
4838                       T :: f(),
4839                       R :: f(),
4840                       Q :: f()) ->
4841                          ok
4842
4843       multiTexCoord4dv(Target :: enum(),
4844                        X2 :: {S :: f(), T :: f(), R :: f(), Q :: f()}) ->
4845                           ok
4846
4847       multiTexCoord4f(Target :: enum(),
4848                       S :: f(),
4849                       T :: f(),
4850                       R :: f(),
4851                       Q :: f()) ->
4852                          ok
4853
4854       multiTexCoord4fv(Target :: enum(),
4855                        X2 :: {S :: f(), T :: f(), R :: f(), Q :: f()}) ->
4856                           ok
4857
4858       multiTexCoord4i(Target :: enum(),
4859                       S :: i(),
4860                       T :: i(),
4861                       R :: i(),
4862                       Q :: i()) ->
4863                          ok
4864
4865       multiTexCoord4iv(Target :: enum(),
4866                        X2 :: {S :: i(), T :: i(), R :: i(), Q :: i()}) ->
4867                           ok
4868
4869       multiTexCoord4s(Target :: enum(),
4870                       S :: i(),
4871                       T :: i(),
4872                       R :: i(),
4873                       Q :: i()) ->
4874                          ok
4875
4876       multiTexCoord4sv(Target :: enum(),
4877                        X2 :: {S :: i(), T :: i(), R :: i(), Q :: i()}) ->
4878                           ok
4879
4880              gl:multiTexCoord() specifies texture coordinates  in  one,  two,
4881              three,  or four dimensions. gl:multiTexCoord1() sets the current
4882              texture coordinates to (s 0 0 1); a call to  gl:multiTexCoord2()
4883              sets them to (s t 0 1). Similarly, gl:multiTexCoord3() specifies
4884              the texture coordinates as (s t r  1),  and  gl:multiTexCoord4()
4885              defines all four components explicitly as (s t r q).
4886
4887              External documentation.
4888
4889       newList(List :: i(), Mode :: enum()) -> ok
4890
4891              Display  lists  are  groups of GL commands that have been stored
4892              for  subsequent  execution.  Display  lists  are  created   with
4893              gl:newList/2.  All subsequent commands are placed in the display
4894              list, in the order issued, until gl:endList/0 is called.
4895
4896              External documentation.
4897
4898       normal3b(Nx :: i(), Ny :: i(), Nz :: i()) -> ok
4899
4900       normal3bv(X1 :: {Nx :: i(), Ny :: i(), Nz :: i()}) -> ok
4901
4902       normal3d(Nx :: f(), Ny :: f(), Nz :: f()) -> ok
4903
4904       normal3dv(X1 :: {Nx :: f(), Ny :: f(), Nz :: f()}) -> ok
4905
4906       normal3f(Nx :: f(), Ny :: f(), Nz :: f()) -> ok
4907
4908       normal3fv(X1 :: {Nx :: f(), Ny :: f(), Nz :: f()}) -> ok
4909
4910       normal3i(Nx :: i(), Ny :: i(), Nz :: i()) -> ok
4911
4912       normal3iv(X1 :: {Nx :: i(), Ny :: i(), Nz :: i()}) -> ok
4913
4914       normal3s(Nx :: i(), Ny :: i(), Nz :: i()) -> ok
4915
4916       normal3sv(X1 :: {Nx :: i(), Ny :: i(), Nz :: i()}) -> ok
4917
4918              The current normal is set  to  the  given  coordinates  whenever
4919              gl:normal()  is  issued.  Byte,  short, or integer arguments are
4920              converted to floating-point format with a  linear  mapping  that
4921              maps  the  most  positive representable integer value to 1.0 and
4922              the most negative representable integer value to -1.0.
4923
4924              External documentation.
4925
4926       normalPointer(Type :: enum(),
4927                     Stride :: i(),
4928                     Ptr :: offset() | mem()) ->
4929                        ok
4930
4931              gl:normalPointer/3 specifies the location and data format of  an
4932              array  of normals to use when rendering. Type specifies the data
4933              type of each normal coordinate, and Stride  specifies  the  byte
4934              stride  from  one  normal to the next, allowing vertices and at‐
4935              tributes to be packed into a single array or stored in  separate
4936              arrays.  (Single-array storage may be more efficient on some im‐
4937              plementations; see gl:interleavedArrays/3.)
4938
4939              External documentation.
4940
4941       objectPtrLabel(Ptr :: offset() | mem(),
4942                      Length :: i(),
4943                      Label :: string()) ->
4944                         ok
4945
4946              gl:objectPtrLabel/3 labels the sync object identified by Ptr.
4947
4948              External documentation.
4949
4950       ortho(Left :: f(),
4951             Right :: f(),
4952             Bottom :: f(),
4953             Top :: f(),
4954             Near_val :: f(),
4955             Far_val :: f()) ->
4956                ok
4957
4958              gl:ortho/6 describes a transformation that produces  a  parallel
4959              projection.  The  current matrix (see gl:matrixMode/1) is multi‐
4960              plied by this matrix and the result replaces the current matrix,
4961              as  if  gl:multMatrix() were called with the following matrix as
4962              its argument:
4963
4964              External documentation.
4965
4966       passThrough(Token :: f()) -> ok
4967
4968              External documentation.
4969
4970       patchParameterfv(Pname :: enum(), Values :: [f()]) -> ok
4971
4972       patchParameteri(Pname :: enum(), Value :: i()) -> ok
4973
4974              gl:patchParameter() specifies the parameters that will  be  used
4975              for  patch  primitives.  Pname specifies the parameter to modify
4976              and   must   be   either    ?GL_PATCH_VERTICES,    ?GL_PATCH_DE‐
4977              FAULT_OUTER_LEVEL    or    ?GL_PATCH_DEFAULT_INNER_LEVEL.    For
4978              gl:patchParameteri/2, Value specifies the new value for the  pa‐
4979              rameter  specified  by  Pname. For gl:patchParameterfv/2, Values
4980              specifies the address of an array containing the new values  for
4981              the parameter specified by Pname.
4982
4983              External documentation.
4984
4985       pauseTransformFeedback() -> ok
4986
4987              gl:pauseTransformFeedback/0 pauses transform feedback operations
4988              on the currently active transform feedback object.  When  trans‐
4989              form feedback operations are paused, transform feedback is still
4990              considered active and changing most transform feedback state re‐
4991              lated  to  the object results in an error. However, a new trans‐
4992              form feedback object may be bound while  transform  feedback  is
4993              paused.
4994
4995              External documentation.
4996
4997       pixelMapfv(Map :: enum(), Mapsize :: i(), Values :: binary()) ->
4998                     ok
4999
5000       pixelMapuiv(Map :: enum(), Mapsize :: i(), Values :: binary()) ->
5001                      ok
5002
5003       pixelMapusv(Map :: enum(), Mapsize :: i(), Values :: binary()) ->
5004                      ok
5005
5006              gl:pixelMap()  sets  up  translation  tables,  or  maps, used by
5007              gl:copyPixels/5,    gl:copyTexImage1D/7,    gl:copyTexImage2D/8,
5008              gl:copyTexSubImage1D/6, gl:copyTexSubImage2D/8, gl:copyTexSubIm‐
5009              age3D/9,  gl:drawPixels/5,   gl:readPixels/7,   gl:texImage1D/8,
5010              gl:texImage2D/9,  gl:texImage3D/10,  gl:texSubImage1D/7, gl:tex‐
5011              SubImage2D/9,  and  gl:texSubImage3D/11.  Additionally,  if  the
5012              ARB_imaging  subset  is supported, the routines gl:colorTable/6,
5013              gl:colorSubTable/6, gl:convolutionFilter1D/6, gl:convolutionFil‐
5014              ter2D/7,    gl:histogram/4,   gl:minmax/3,   and   gl:separable‐
5015              Filter2D/8. Use of these maps is  described  completely  in  the
5016              gl:pixelTransfer()  reference  page, and partly in the reference
5017              pages for the pixel and texture image commands. Only the  speci‐
5018              fication of the maps is described in this reference page.
5019
5020              External documentation.
5021
5022       pixelStoref(Pname :: enum(), Param :: f()) -> ok
5023
5024       pixelStorei(Pname :: enum(), Param :: i()) -> ok
5025
5026              gl:pixelStore()  sets pixel storage modes that affect the opera‐
5027              tion of subsequent gl:readPixels/7 as well as the  unpacking  of
5028              texture  patterns (see gl:texImage1D/8, gl:texImage2D/9, gl:tex‐
5029              Image3D/10, gl:texSubImage1D/7, gl:texSubImage2D/9, gl:texSubIm‐
5030              age3D/11), gl:compressedTexImage1D/7, gl:compressedTexImage2D/8,
5031              gl:compressedTexImage3D/9, gl:compressedTexSubImage1D/7, gl:com‐
5032              pressedTexSubImage2D/9 or gl:compressedTexSubImage1D/7.
5033
5034              External documentation.
5035
5036       pixelTransferf(Pname :: enum(), Param :: f()) -> ok
5037
5038       pixelTransferi(Pname :: enum(), Param :: i()) -> ok
5039
5040              gl:pixelTransfer() sets pixel transfer modes that affect the op‐
5041              eration  of  subsequent  gl:copyPixels/5,   gl:copyTexImage1D/7,
5042              gl:copyTexImage2D/8,   gl:copyTexSubImage1D/6,  gl:copyTexSubIm‐
5043              age2D/8,  gl:copyTexSubImage3D/9,  gl:drawPixels/5,  gl:readPix‐
5044              els/7,   gl:texImage1D/8,   gl:texImage2D/9,   gl:texImage3D/10,
5045              gl:texSubImage1D/7, gl:texSubImage2D/9, and  gl:texSubImage3D/11
5046              commands.  Additionally, if the ARB_imaging subset is supported,
5047              the routines  gl:colorTable/6,  gl:colorSubTable/6,  gl:convolu‐
5048              tionFilter1D/6,     gl:convolutionFilter2D/7,    gl:histogram/4,
5049              gl:minmax/3, and gl:separableFilter2D/8 are also  affected.  The
5050              algorithms that are specified by pixel transfer modes operate on
5051              pixels after they are read from the  frame  buffer  (gl:copyPix‐
5052              els/5gl:copyTexImage1D/7,  gl:copyTexImage2D/8, gl:copyTexSubIm‐
5053              age1D/6,  gl:copyTexSubImage2D/8,  gl:copyTexSubImage3D/9,   and
5054              gl:readPixels/7),  or  unpacked  from client memory (gl:drawPix‐
5055              els/5,   gl:texImage1D/8,   gl:texImage2D/9,   gl:texImage3D/10,
5056              gl:texSubImage1D/7,    gl:texSubImage2D/9,    and   gl:texSubIm‐
5057              age3D/11). Pixel transfer operations happen in the  same  order,
5058              and  in the same manner, regardless of the command that resulted
5059              in the pixel  operation.  Pixel  storage  modes  (see  gl:pixel‐
5060              Store())  control the unpacking of pixels being read from client
5061              memory and the packing of pixels being written back into  client
5062              memory.
5063
5064              External documentation.
5065
5066       pixelZoom(Xfactor :: f(), Yfactor :: f()) -> ok
5067
5068              gl:pixelZoom/2  specifies  values  for the x and y zoom factors.
5069              During the execution of gl:drawPixels/5 or gl:copyPixels/5, if (
5070              xr,  yr)  is the current raster position, and a given element is
5071              in the mth row and nth column of the pixel rectangle, then  pix‐
5072              els whose centers are in the rectangle with corners at
5073
5074              External documentation.
5075
5076       pointParameterf(Pname :: enum(), Param :: f()) -> ok
5077
5078       pointParameterfv(Pname :: enum(), Params :: tuple()) -> ok
5079
5080       pointParameteri(Pname :: enum(), Param :: i()) -> ok
5081
5082       pointParameteriv(Pname :: enum(), Params :: tuple()) -> ok
5083
5084              The following values are accepted for Pname:
5085
5086              External documentation.
5087
5088       pointSize(Size :: f()) -> ok
5089
5090              gl:pointSize/1  specifies  the rasterized diameter of points. If
5091              point size mode is  disabled  (see  gl:enable/1  with  parameter
5092              ?GL_PROGRAM_POINT_SIZE),  this  value  will be used to rasterize
5093              points. Otherwise, the value written  to  the  shading  language
5094              built-in variable gl_PointSize will be used.
5095
5096              External documentation.
5097
5098       polygonMode(Face :: enum(), Mode :: enum()) -> ok
5099
5100              gl:polygonMode/2  controls  the  interpretation  of polygons for
5101              rasterization. Face describes which polygons  Mode  applies  to:
5102              both  front  and  back-facing polygons (?GL_FRONT_AND_BACK). The
5103              polygon mode affects only the final rasterization  of  polygons.
5104              In  particular,  a polygon's vertices are lit and the polygon is
5105              clipped and possibly culled before these modes are applied.
5106
5107              External documentation.
5108
5109       polygonOffset(Factor :: f(), Units :: f()) -> ok
5110
5111              When   ?GL_POLYGON_OFFSET_FILL,   ?GL_POLYGON_OFFSET_LINE,    or
5112              ?GL_POLYGON_OFFSET_POINT is enabled, each fragment's depth value
5113              will be offset after it is interpolated from the depth values of
5114              the  appropriate  vertices.  The  value  of  the  offset is fac‐
5115              tor×DZ+r×units, where DZ is a measurement of the change in depth
5116              relative  to the screen area of the polygon, and r is the small‐
5117              est value that is guaranteed to produce a resolvable offset  for
5118              a  given  implementation.  The  offset is added before the depth
5119              test is performed and before the value is written into the depth
5120              buffer.
5121
5122              External documentation.
5123
5124       polygonOffsetClamp(Factor :: f(), Units :: f(), Clamp :: f()) ->
5125                             ok
5126
5127              No documentation available.
5128
5129       polygonStipple(Mask :: binary()) -> ok
5130
5131              Polygon  stippling,  like line stippling (see gl:lineStipple/2),
5132              masks out certain fragments produced by rasterization,  creating
5133              a pattern. Stippling is independent of polygon antialiasing.
5134
5135              External documentation.
5136
5137       primitiveBoundingBoxARB(MinX, MinY, MinZ, MinW, MaxX, MaxY, MaxZ,
5138                               MaxW) ->
5139                                  ok
5140
5141              Types:
5142
5143                 MinX = MinY = MinZ = MinW = MaxX = MaxY = MaxZ = MaxW = f()
5144
5145              No documentation available.
5146
5147       primitiveRestartIndex(Index :: i()) -> ok
5148
5149              gl:primitiveRestartIndex/1 specifies a vertex array element that
5150              is treated specially when primitive restarting is enabled.  This
5151              is known as the primitive restart index.
5152
5153              External documentation.
5154
5155       prioritizeTextures(Textures :: [i()], Priorities :: [clamp()]) ->
5156                             ok
5157
5158              gl:prioritizeTextures/2  assigns  the N texture priorities given
5159              in Priorities to the N textures named in Textures.
5160
5161              External documentation.
5162
5163       programBinary(Program :: i(),
5164                     BinaryFormat :: enum(),
5165                     Binary :: binary()) ->
5166                        ok
5167
5168              gl:programBinary/3 loads a program object with a program  binary
5169              previously returned from gl:getProgramBinary/2. BinaryFormat and
5170              Binary must be those returned by a previous call  to  gl:getPro‐
5171              gramBinary/2,  and Length must be the length returned by gl:get‐
5172              ProgramBinary/2, or by gl:getProgram() when  called  with  Pname
5173              set  to  ?GL_PROGRAM_BINARY_LENGTH.  If these conditions are not
5174              met,  loading  the  program  binary  will  fail  and   Program's
5175              ?GL_LINK_STATUS will be set to ?GL_FALSE.
5176
5177              External documentation.
5178
5179       programEnvParameter4dARB(Target :: enum(),
5180                                Index :: i(),
5181                                X :: f(),
5182                                Y :: f(),
5183                                Z :: f(),
5184                                W :: f()) ->
5185                                   ok
5186
5187       programEnvParameter4dvARB(Target :: enum(),
5188                                 Index :: i(),
5189                                 Params :: {f(), f(), f(), f()}) ->
5190                                    ok
5191
5192       programEnvParameter4fARB(Target :: enum(),
5193                                Index :: i(),
5194                                X :: f(),
5195                                Y :: f(),
5196                                Z :: f(),
5197                                W :: f()) ->
5198                                   ok
5199
5200       programEnvParameter4fvARB(Target :: enum(),
5201                                 Index :: i(),
5202                                 Params :: {f(), f(), f(), f()}) ->
5203                                    ok
5204
5205              No documentation available.
5206
5207       programLocalParameter4dARB(Target :: enum(),
5208                                  Index :: i(),
5209                                  X :: f(),
5210                                  Y :: f(),
5211                                  Z :: f(),
5212                                  W :: f()) ->
5213                                     ok
5214
5215       programLocalParameter4dvARB(Target :: enum(),
5216                                   Index :: i(),
5217                                   Params :: {f(), f(), f(), f()}) ->
5218                                      ok
5219
5220       programLocalParameter4fARB(Target :: enum(),
5221                                  Index :: i(),
5222                                  X :: f(),
5223                                  Y :: f(),
5224                                  Z :: f(),
5225                                  W :: f()) ->
5226                                     ok
5227
5228       programLocalParameter4fvARB(Target :: enum(),
5229                                   Index :: i(),
5230                                   Params :: {f(), f(), f(), f()}) ->
5231                                      ok
5232
5233              No documentation available.
5234
5235       programParameteri(Program :: i(), Pname :: enum(), Value :: i()) ->
5236                            ok
5237
5238              gl:programParameter()  specifies  a  new value for the parameter
5239              nameed by Pname for the program object Program.
5240
5241              External documentation.
5242
5243       programStringARB(Target :: enum(),
5244                        Format :: enum(),
5245                        String :: string()) ->
5246                           ok
5247
5248              No documentation available.
5249
5250       programUniform1d(Program :: i(), Location :: i(), V0 :: f()) -> ok
5251
5252       programUniform1dv(Program :: i(), Location :: i(), Value :: [f()]) ->
5253                            ok
5254
5255       programUniform1f(Program :: i(), Location :: i(), V0 :: f()) -> ok
5256
5257       programUniform1fv(Program :: i(), Location :: i(), Value :: [f()]) ->
5258                            ok
5259
5260       programUniform1i(Program :: i(), Location :: i(), V0 :: i()) -> ok
5261
5262       programUniform1iv(Program :: i(), Location :: i(), Value :: [i()]) ->
5263                            ok
5264
5265       programUniform1ui(Program :: i(), Location :: i(), V0 :: i()) ->
5266                            ok
5267
5268       programUniform1uiv(Program :: i(),
5269                          Location :: i(),
5270                          Value :: [i()]) ->
5271                             ok
5272
5273       programUniform2d(Program :: i(),
5274                        Location :: i(),
5275                        V0 :: f(),
5276                        V1 :: f()) ->
5277                           ok
5278
5279       programUniform2dv(Program :: i(),
5280                         Location :: i(),
5281                         Value :: [{f(), f()}]) ->
5282                            ok
5283
5284       programUniform2f(Program :: i(),
5285                        Location :: i(),
5286                        V0 :: f(),
5287                        V1 :: f()) ->
5288                           ok
5289
5290       programUniform2fv(Program :: i(),
5291                         Location :: i(),
5292                         Value :: [{f(), f()}]) ->
5293                            ok
5294
5295       programUniform2i(Program :: i(),
5296                        Location :: i(),
5297                        V0 :: i(),
5298                        V1 :: i()) ->
5299                           ok
5300
5301       programUniform2iv(Program :: i(),
5302                         Location :: i(),
5303                         Value :: [{i(), i()}]) ->
5304                            ok
5305
5306       programUniform2ui(Program :: i(),
5307                         Location :: i(),
5308                         V0 :: i(),
5309                         V1 :: i()) ->
5310                            ok
5311
5312       programUniform2uiv(Program :: i(),
5313                          Location :: i(),
5314                          Value :: [{i(), i()}]) ->
5315                             ok
5316
5317       programUniform3d(Program :: i(),
5318                        Location :: i(),
5319                        V0 :: f(),
5320                        V1 :: f(),
5321                        V2 :: f()) ->
5322                           ok
5323
5324       programUniform3dv(Program :: i(),
5325                         Location :: i(),
5326                         Value :: [{f(), f(), f()}]) ->
5327                            ok
5328
5329       programUniform3f(Program :: i(),
5330                        Location :: i(),
5331                        V0 :: f(),
5332                        V1 :: f(),
5333                        V2 :: f()) ->
5334                           ok
5335
5336       programUniform3fv(Program :: i(),
5337                         Location :: i(),
5338                         Value :: [{f(), f(), f()}]) ->
5339                            ok
5340
5341       programUniform3i(Program :: i(),
5342                        Location :: i(),
5343                        V0 :: i(),
5344                        V1 :: i(),
5345                        V2 :: i()) ->
5346                           ok
5347
5348       programUniform3iv(Program :: i(),
5349                         Location :: i(),
5350                         Value :: [{i(), i(), i()}]) ->
5351                            ok
5352
5353       programUniform3ui(Program :: i(),
5354                         Location :: i(),
5355                         V0 :: i(),
5356                         V1 :: i(),
5357                         V2 :: i()) ->
5358                            ok
5359
5360       programUniform3uiv(Program :: i(),
5361                          Location :: i(),
5362                          Value :: [{i(), i(), i()}]) ->
5363                             ok
5364
5365       programUniform4d(Program :: i(),
5366                        Location :: i(),
5367                        V0 :: f(),
5368                        V1 :: f(),
5369                        V2 :: f(),
5370                        V3 :: f()) ->
5371                           ok
5372
5373       programUniform4dv(Program :: i(),
5374                         Location :: i(),
5375                         Value :: [{f(), f(), f(), f()}]) ->
5376                            ok
5377
5378       programUniform4f(Program :: i(),
5379                        Location :: i(),
5380                        V0 :: f(),
5381                        V1 :: f(),
5382                        V2 :: f(),
5383                        V3 :: f()) ->
5384                           ok
5385
5386       programUniform4fv(Program :: i(),
5387                         Location :: i(),
5388                         Value :: [{f(), f(), f(), f()}]) ->
5389                            ok
5390
5391       programUniform4i(Program :: i(),
5392                        Location :: i(),
5393                        V0 :: i(),
5394                        V1 :: i(),
5395                        V2 :: i(),
5396                        V3 :: i()) ->
5397                           ok
5398
5399       programUniform4iv(Program :: i(),
5400                         Location :: i(),
5401                         Value :: [{i(), i(), i(), i()}]) ->
5402                            ok
5403
5404       programUniform4ui(Program :: i(),
5405                         Location :: i(),
5406                         V0 :: i(),
5407                         V1 :: i(),
5408                         V2 :: i(),
5409                         V3 :: i()) ->
5410                            ok
5411
5412       programUniform4uiv(Program :: i(),
5413                          Location :: i(),
5414                          Value :: [{i(), i(), i(), i()}]) ->
5415                             ok
5416
5417       programUniformMatrix2dv(Program :: i(),
5418                               Location :: i(),
5419                               Transpose :: 0 | 1,
5420                               Value :: [{f(), f(), f(), f()}]) ->
5421                                  ok
5422
5423       programUniformMatrix2fv(Program :: i(),
5424                               Location :: i(),
5425                               Transpose :: 0 | 1,
5426                               Value :: [{f(), f(), f(), f()}]) ->
5427                                  ok
5428
5429       programUniformMatrix2x3dv(Program :: i(),
5430                                 Location :: i(),
5431                                 Transpose :: 0 | 1,
5432                                 Value ::
5433                                     [{f(), f(), f(), f(), f(), f()}]) ->
5434                                    ok
5435
5436       programUniformMatrix2x3fv(Program :: i(),
5437                                 Location :: i(),
5438                                 Transpose :: 0 | 1,
5439                                 Value ::
5440                                     [{f(), f(), f(), f(), f(), f()}]) ->
5441                                    ok
5442
5443       programUniformMatrix2x4dv(Program, Location, Transpose, Value) ->
5444                                    ok
5445
5446       programUniformMatrix2x4fv(Program, Location, Transpose, Value) ->
5447                                    ok
5448
5449       programUniformMatrix3dv(Program, Location, Transpose, Value) -> ok
5450
5451       programUniformMatrix3fv(Program, Location, Transpose, Value) -> ok
5452
5453       programUniformMatrix3x2dv(Program :: i(),
5454                                 Location :: i(),
5455                                 Transpose :: 0 | 1,
5456                                 Value ::
5457                                     [{f(), f(), f(), f(), f(), f()}]) ->
5458                                    ok
5459
5460       programUniformMatrix3x2fv(Program :: i(),
5461                                 Location :: i(),
5462                                 Transpose :: 0 | 1,
5463                                 Value ::
5464                                     [{f(), f(), f(), f(), f(), f()}]) ->
5465                                    ok
5466
5467       programUniformMatrix3x4dv(Program, Location, Transpose, Value) ->
5468                                    ok
5469
5470       programUniformMatrix3x4fv(Program, Location, Transpose, Value) ->
5471                                    ok
5472
5473       programUniformMatrix4dv(Program, Location, Transpose, Value) -> ok
5474
5475       programUniformMatrix4fv(Program, Location, Transpose, Value) -> ok
5476
5477       programUniformMatrix4x2dv(Program, Location, Transpose, Value) ->
5478                                    ok
5479
5480       programUniformMatrix4x2fv(Program, Location, Transpose, Value) ->
5481                                    ok
5482
5483       programUniformMatrix4x3dv(Program, Location, Transpose, Value) ->
5484                                    ok
5485
5486       programUniformMatrix4x3fv(Program, Location, Transpose, Value) ->
5487                                    ok
5488
5489              Types:
5490
5491                 Program = Location = i()
5492                 Transpose = 0 | 1
5493                 Value =
5494                     [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(),  f(),
5495                 f()}]
5496
5497              gl:programUniform()  modifies the value of a uniform variable or
5498              a uniform variable array. The location of the  uniform  variable
5499              to be modified is specified by Location, which should be a value
5500              returned by gl:getUniformLocation/2.  gl:programUniform()  oper‐
5501              ates on the program object specified by Program.
5502
5503              External documentation.
5504
5505       programUniform1i64vARB(Program :: i(),
5506                              Location :: i(),
5507                              Value :: [i()]) ->
5508                                 ok
5509
5510              No documentation available.
5511
5512       programUniform1i64ARB(Program :: i(), Location :: i(), X :: i()) ->
5513                                ok
5514
5515              No documentation available.
5516
5517       programUniform1ui64vARB(Program :: i(),
5518                               Location :: i(),
5519                               Value :: [i()]) ->
5520                                  ok
5521
5522              No documentation available.
5523
5524       programUniform1ui64ARB(Program :: i(), Location :: i(), X :: i()) ->
5525                                 ok
5526
5527              No documentation available.
5528
5529       programUniform2i64vARB(Program :: i(),
5530                              Location :: i(),
5531                              Value :: [{i(), i()}]) ->
5532                                 ok
5533
5534              No documentation available.
5535
5536       programUniform2i64ARB(Program :: i(),
5537                             Location :: i(),
5538                             X :: i(),
5539                             Y :: i()) ->
5540                                ok
5541
5542              No documentation available.
5543
5544       programUniform2ui64vARB(Program :: i(),
5545                               Location :: i(),
5546                               Value :: [{i(), i()}]) ->
5547                                  ok
5548
5549              No documentation available.
5550
5551       programUniform2ui64ARB(Program :: i(),
5552                              Location :: i(),
5553                              X :: i(),
5554                              Y :: i()) ->
5555                                 ok
5556
5557              No documentation available.
5558
5559       programUniform3i64vARB(Program :: i(),
5560                              Location :: i(),
5561                              Value :: [{i(), i(), i()}]) ->
5562                                 ok
5563
5564              No documentation available.
5565
5566       programUniform3i64ARB(Program :: i(),
5567                             Location :: i(),
5568                             X :: i(),
5569                             Y :: i(),
5570                             Z :: i()) ->
5571                                ok
5572
5573              No documentation available.
5574
5575       programUniform3ui64vARB(Program :: i(),
5576                               Location :: i(),
5577                               Value :: [{i(), i(), i()}]) ->
5578                                  ok
5579
5580              No documentation available.
5581
5582       programUniform3ui64ARB(Program :: i(),
5583                              Location :: i(),
5584                              X :: i(),
5585                              Y :: i(),
5586                              Z :: i()) ->
5587                                 ok
5588
5589              No documentation available.
5590
5591       programUniform4i64vARB(Program :: i(),
5592                              Location :: i(),
5593                              Value :: [{i(), i(), i(), i()}]) ->
5594                                 ok
5595
5596              No documentation available.
5597
5598       programUniform4i64ARB(Program :: i(),
5599                             Location :: i(),
5600                             X :: i(),
5601                             Y :: i(),
5602                             Z :: i(),
5603                             W :: i()) ->
5604                                ok
5605
5606              No documentation available.
5607
5608       programUniform4ui64vARB(Program :: i(),
5609                               Location :: i(),
5610                               Value :: [{i(), i(), i(), i()}]) ->
5611                                  ok
5612
5613              No documentation available.
5614
5615       programUniform4ui64ARB(Program :: i(),
5616                              Location :: i(),
5617                              X :: i(),
5618                              Y :: i(),
5619                              Z :: i(),
5620                              W :: i()) ->
5621                                 ok
5622
5623              No documentation available.
5624
5625       programUniformHandleui64ARB(Program :: i(),
5626                                   Location :: i(),
5627                                   Value :: i()) ->
5628                                      ok
5629
5630              No documentation available.
5631
5632       provokingVertex(Mode :: enum()) -> ok
5633
5634              Flatshading  a  vertex shader varying output means to assign all
5635              vetices of the primitive the same value  for  that  output.  The
5636              vertex  from  which these values is derived is known as the pro‐
5637              voking vertex and gl:provokingVertex/1 specifies which vertex is
5638              to be used as the source of data for flat shaded varyings.
5639
5640              External documentation.
5641
5642       popAttrib() -> ok
5643
5644       pushAttrib(Mask :: i()) -> ok
5645
5646              gl:pushAttrib/1  takes one argument, a mask that indicates which
5647              groups of state variables to save on the attribute  stack.  Sym‐
5648              bolic  constants are used to set bits in the mask. Mask is typi‐
5649              cally constructed by specifying the  bitwise-or  of  several  of
5650              these  constants  together. The special mask ?GL_ALL_ATTRIB_BITS
5651              can be used to save all stackable states.
5652
5653              External documentation.
5654
5655       popClientAttrib() -> ok
5656
5657       pushClientAttrib(Mask :: i()) -> ok
5658
5659              gl:pushClientAttrib/1 takes one argument, a mask that  indicates
5660              which groups of client-state variables to save on the client at‐
5661              tribute stack. Symbolic constants are used to set  bits  in  the
5662              mask. Mask is typically constructed by specifying the bitwise-or
5663              of  several  of  these  constants  together.  The  special  mask
5664              ?GL_CLIENT_ALL_ATTRIB_BITS  can  be  used  to save all stackable
5665              client state.
5666
5667              External documentation.
5668
5669       popDebugGroup() -> ok
5670
5671       pushDebugGroup(Source :: enum(),
5672                      Id :: i(),
5673                      Length :: i(),
5674                      Message :: string()) ->
5675                         ok
5676
5677              gl:pushDebugGroup/4 pushes a debug group described by the string
5678              Message  into  the command stream. The value of Id specifies the
5679              ID of messages generated. The parameter Length contains the num‐
5680              ber  of  characters in Message. If Length is negative, it is im‐
5681              plied that Message contains a null terminated string.  The  mes‐
5682              sage   has   the   specified  Source  and  Id,  the  Type?GL_DE‐
5683              BUG_TYPE_PUSH_GROUP,  and   Severity?GL_DEBUG_SEVERITY_NOTIFICA‐
5684              TION.  The  GL  will  put  a new debug group on top of the debug
5685              group stack which inherits the control of the  volume  of  debug
5686              output  of the debug group previously residing on the top of the
5687              debug group stack. Because debug groups are strictly  hierarchi‐
5688              cal, any additional control of the debug output volume will only
5689              apply within the active debug group and the debug groups  pushed
5690              on top of the active debug group.
5691
5692              External documentation.
5693
5694       popMatrix() -> ok
5695
5696       pushMatrix() -> ok
5697
5698              There  is  a  stack of matrices for each of the matrix modes. In
5699              ?GL_MODELVIEW mode, the stack depth is at least 32. In the other
5700              modes,  ?GL_COLOR, ?GL_PROJECTION, and ?GL_TEXTURE, the depth is
5701              at least 2. The current matrix in any mode is the matrix on  the
5702              top of the stack for that mode.
5703
5704              External documentation.
5705
5706       popName() -> ok
5707
5708       pushName(Name :: i()) -> ok
5709
5710              The  name  stack  is used during selection mode to allow sets of
5711              rendering commands to be uniquely identified. It consists of  an
5712              ordered set of unsigned integers and is initially empty.
5713
5714              External documentation.
5715
5716       queryCounter(Id :: i(), Target :: enum()) -> ok
5717
5718              gl:queryCounter/2  causes the GL to record the current time into
5719              the query object named Id. Target  must  be  ?GL_TIMESTAMP.  The
5720              time  is  recorded  after all previous commands on the GL client
5721              and server state and the framebuffer have been  fully  realized.
5722              When  the  time is recorded, the query result for that object is
5723              marked available. gl:queryCounter/2 timer queries  can  be  used
5724              within  a gl:beginQuery/2 / gl:endQuery/1 block where the target
5725              is ?GL_TIME_ELAPSED and it does not affect the  result  of  that
5726              query object.
5727
5728              External documentation.
5729
5730       rasterPos2d(X :: f(), Y :: f()) -> ok
5731
5732       rasterPos2dv(X1 :: {X :: f(), Y :: f()}) -> ok
5733
5734       rasterPos2f(X :: f(), Y :: f()) -> ok
5735
5736       rasterPos2fv(X1 :: {X :: f(), Y :: f()}) -> ok
5737
5738       rasterPos2i(X :: i(), Y :: i()) -> ok
5739
5740       rasterPos2iv(X1 :: {X :: i(), Y :: i()}) -> ok
5741
5742       rasterPos2s(X :: i(), Y :: i()) -> ok
5743
5744       rasterPos2sv(X1 :: {X :: i(), Y :: i()}) -> ok
5745
5746       rasterPos3d(X :: f(), Y :: f(), Z :: f()) -> ok
5747
5748       rasterPos3dv(X1 :: {X :: f(), Y :: f(), Z :: f()}) -> ok
5749
5750       rasterPos3f(X :: f(), Y :: f(), Z :: f()) -> ok
5751
5752       rasterPos3fv(X1 :: {X :: f(), Y :: f(), Z :: f()}) -> ok
5753
5754       rasterPos3i(X :: i(), Y :: i(), Z :: i()) -> ok
5755
5756       rasterPos3iv(X1 :: {X :: i(), Y :: i(), Z :: i()}) -> ok
5757
5758       rasterPos3s(X :: i(), Y :: i(), Z :: i()) -> ok
5759
5760       rasterPos3sv(X1 :: {X :: i(), Y :: i(), Z :: i()}) -> ok
5761
5762       rasterPos4d(X :: f(), Y :: f(), Z :: f(), W :: f()) -> ok
5763
5764       rasterPos4dv(X1 :: {X :: f(), Y :: f(), Z :: f(), W :: f()}) -> ok
5765
5766       rasterPos4f(X :: f(), Y :: f(), Z :: f(), W :: f()) -> ok
5767
5768       rasterPos4fv(X1 :: {X :: f(), Y :: f(), Z :: f(), W :: f()}) -> ok
5769
5770       rasterPos4i(X :: i(), Y :: i(), Z :: i(), W :: i()) -> ok
5771
5772       rasterPos4iv(X1 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) -> ok
5773
5774       rasterPos4s(X :: i(), Y :: i(), Z :: i(), W :: i()) -> ok
5775
5776       rasterPos4sv(X1 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) -> ok
5777
5778              The GL maintains a 3D position in window coordinates. This posi‐
5779              tion, called the raster position, is used to position pixel  and
5780              bitmap  write  operations.  It is maintained with subpixel accu‐
5781              racy. See gl:bitmap/7, gl:drawPixels/5, and gl:copyPixels/5.
5782
5783              External documentation.
5784
5785       readBuffer(Mode :: enum()) -> ok
5786
5787              gl:readBuffer/1 specifies a color buffer as the source for  sub‐
5788              sequent   gl:readPixels/7,   gl:copyTexImage1D/7,  gl:copyTexIm‐
5789              age2D/8,  gl:copyTexSubImage1D/6,  gl:copyTexSubImage2D/8,   and
5790              gl:copyTexSubImage3D/9  commands.  Mode accepts one of twelve or
5791              more predefined values. In a fully configured system, ?GL_FRONT,
5792              ?GL_LEFT,  and  ?GL_FRONT_LEFT  all  name the front left buffer,
5793              ?GL_FRONT_RIGHT and ?GL_RIGHT name the front right  buffer,  and
5794              ?GL_BACK_LEFT  and  ?GL_BACK  name the back left buffer. Further
5795              more, the constants ?GL_COLOR_ATTACHMENTi may be used  to  indi‐
5796              cate  the  ith  color attachment where i ranges from zero to the
5797              value of ?GL_MAX_COLOR_ATTACHMENTS minus one.
5798
5799              External documentation.
5800
5801       readPixels(X, Y, Width, Height, Format, Type, Pixels) -> ok
5802
5803              Types:
5804
5805                 X = Y = Width = Height = i()
5806                 Format = Type = enum()
5807                 Pixels = mem()
5808
5809              gl:readPixels/7 and glReadnPixels return  pixel  data  from  the
5810              frame buffer, starting with the pixel whose lower left corner is
5811              at location (X, Y), into  client  memory  starting  at  location
5812              Data.  Several  parameters  control  the processing of the pixel
5813              data before it is placed into client  memory.  These  parameters
5814              are  set with gl:pixelStore(). This reference page describes the
5815              effects on gl:readPixels/7 and glReadnPixels of  most,  but  not
5816              all of the parameters specified by these three commands.
5817
5818              External documentation.
5819
5820       rectd(X1 :: f(), Y1 :: f(), X2 :: f(), Y2 :: f()) -> ok
5821
5822       rectdv(V1 :: {f(), f()}, V2 :: {f(), f()}) -> ok
5823
5824       rectf(X1 :: f(), Y1 :: f(), X2 :: f(), Y2 :: f()) -> ok
5825
5826       rectfv(V1 :: {f(), f()}, V2 :: {f(), f()}) -> ok
5827
5828       recti(X1 :: i(), Y1 :: i(), X2 :: i(), Y2 :: i()) -> ok
5829
5830       rectiv(V1 :: {i(), i()}, V2 :: {i(), i()}) -> ok
5831
5832       rects(X1 :: i(), Y1 :: i(), X2 :: i(), Y2 :: i()) -> ok
5833
5834       rectsv(V1 :: {i(), i()}, V2 :: {i(), i()}) -> ok
5835
5836              gl:rect()  supports efficient specification of rectangles as two
5837              corner points. Each rectangle command takes four arguments,  or‐
5838              ganized  either as two consecutive pairs of (x y) coordinates or
5839              as two pointers to arrays, each containing an (x  y)  pair.  The
5840              resulting rectangle is defined in the z=0 plane.
5841
5842              External documentation.
5843
5844       releaseShaderCompiler() -> ok
5845
5846              gl:releaseShaderCompiler/0 provides a hint to the implementation
5847              that it may free internal resources associated with  its  shader
5848              compiler.  gl:compileShader/1 may subsequently be called and the
5849              implementation may at that time reallocate resources  previously
5850              freed by the call to gl:releaseShaderCompiler/0.
5851
5852              External documentation.
5853
5854       renderMode(Mode :: enum()) -> i()
5855
5856              gl:renderMode/1  sets the rasterization mode. It takes one argu‐
5857              ment, Mode, which can assume one of three predefined values:
5858
5859              External documentation.
5860
5861       renderbufferStorage(Target :: enum(),
5862                           Internalformat :: enum(),
5863                           Width :: i(),
5864                           Height :: i()) ->
5865                              ok
5866
5867              gl:renderbufferStorage/4 is  equivalent  to  calling  gl:render‐
5868              bufferStorageMultisample/5  with  the  Samples  set to zero, and
5869              glNamedRenderbufferStorage is equivalent to calling  glNamedRen‐
5870              derbufferStorageMultisample with the samples set to zero.
5871
5872              External documentation.
5873
5874       renderbufferStorageMultisample(Target :: enum(),
5875                                      Samples :: i(),
5876                                      Internalformat :: enum(),
5877                                      Width :: i(),
5878                                      Height :: i()) ->
5879                                         ok
5880
5881              gl:renderbufferStorageMultisample/5 and glNamedRenderbufferStor‐
5882              ageMultisample establish the data  storage,  format,  dimensions
5883              and number of samples of a renderbuffer object's image.
5884
5885              External documentation.
5886
5887       resetHistogram(Target :: enum()) -> ok
5888
5889              gl:resetHistogram/1  resets all the elements of the current his‐
5890              togram table to zero.
5891
5892              External documentation.
5893
5894       resetMinmax(Target :: enum()) -> ok
5895
5896              gl:resetMinmax/1 resets the elements of the current minmax table
5897              to  their  initial  values: the ``maximum'' element receives the
5898              minimum possible component values, and the  ``minimum''  element
5899              receives the maximum possible component values.
5900
5901              External documentation.
5902
5903       resumeTransformFeedback() -> ok
5904
5905              gl:resumeTransformFeedback/0  resumes  transform feedback opera‐
5906              tions on the currently active transform  feedback  object.  When
5907              transform  feedback operations are paused, transform feedback is
5908              still considered active and  changing  most  transform  feedback
5909              state  related to the object results in an error. However, a new
5910              transform feedback object may be bound while transform  feedback
5911              is paused.
5912
5913              External documentation.
5914
5915       rotated(Angle :: f(), X :: f(), Y :: f(), Z :: f()) -> ok
5916
5917       rotatef(Angle :: f(), X :: f(), Y :: f(), Z :: f()) -> ok
5918
5919              gl:rotate() produces a rotation of Angle degrees around the vec‐
5920              tor (x y z). The current matrix (see gl:matrixMode/1) is  multi‐
5921              plied  by  a rotation matrix with the product replacing the cur‐
5922              rent matrix, as if gl:multMatrix() were called with the  follow‐
5923              ing matrix as its argument:
5924
5925              External documentation.
5926
5927       sampleCoverage(Value :: clamp(), Invert :: 0 | 1) -> ok
5928
5929              Multisampling  samples  a pixel multiple times at various imple‐
5930              mentation-dependent subpixel locations to generate  antialiasing
5931              effects.  Multisampling transparently antialiases points, lines,
5932              polygons, and images if it is enabled.
5933
5934              External documentation.
5935
5936       sampleCoverageARB(Value :: f(), Invert :: 0 | 1) -> ok
5937
5938              No documentation available.
5939
5940       sampleMaski(MaskNumber :: i(), Mask :: i()) -> ok
5941
5942              gl:sampleMaski/2 sets one 32-bit sub-word of the multi-word sam‐
5943              ple mask, ?GL_SAMPLE_MASK_VALUE.
5944
5945              External documentation.
5946
5947       samplerParameterIiv(Sampler :: i(),
5948                           Pname :: enum(),
5949                           Param :: [i()]) ->
5950                              ok
5951
5952       samplerParameterf(Sampler :: i(), Pname :: enum(), Param :: f()) ->
5953                            ok
5954
5955       samplerParameterfv(Sampler :: i(),
5956                          Pname :: enum(),
5957                          Param :: [f()]) ->
5958                             ok
5959
5960       samplerParameteri(Sampler :: i(), Pname :: enum(), Param :: i()) ->
5961                            ok
5962
5963       samplerParameteriv(Sampler :: i(),
5964                          Pname :: enum(),
5965                          Param :: [i()]) ->
5966                             ok
5967
5968              gl:samplerParameter()  assigns  the value or values in Params to
5969              the sampler parameter specified as Pname. Sampler specifies  the
5970              sampler object to be modified, and must be the name of a sampler
5971              object previously returned from a call to gl:genSamplers/1.  The
5972              following symbols are accepted in Pname:
5973
5974              External documentation.
5975
5976       samplerParameterIuiv(Sampler :: i(),
5977                            Pname :: enum(),
5978                            Param :: [i()]) ->
5979                               ok
5980
5981              No documentation available.
5982
5983       scaled(X :: f(), Y :: f(), Z :: f()) -> ok
5984
5985       scalef(X :: f(), Y :: f(), Z :: f()) -> ok
5986
5987              gl:scale()  produces  a nonuniform scaling along the x, y, and z
5988              axes. The three parameters indicate  the  desired  scale  factor
5989              along each of the three axes.
5990
5991              External documentation.
5992
5993       scissor(X :: i(), Y :: i(), Width :: i(), Height :: i()) -> ok
5994
5995              gl:scissor/4  defines  a  rectangle,  called the scissor box, in
5996              window coordinates. The first two arguments, X  and  Y,  specify
5997              the  lower  left corner of the box. Width and Height specify the
5998              width and height of the box.
5999
6000              External documentation.
6001
6002       scissorArrayv(First :: i(), V :: [{i(), i(), i(), i()}]) -> ok
6003
6004              No documentation available.
6005
6006       scissorIndexed(Index :: i(),
6007                      Left :: i(),
6008                      Bottom :: i(),
6009                      Width :: i(),
6010                      Height :: i()) ->
6011                         ok
6012
6013       scissorIndexedv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
6014
6015              No documentation available.
6016
6017       secondaryColor3b(Red :: i(), Green :: i(), Blue :: i()) -> ok
6018
6019       secondaryColor3bv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) ->
6020                            ok
6021
6022       secondaryColor3d(Red :: f(), Green :: f(), Blue :: f()) -> ok
6023
6024       secondaryColor3dv(X1 :: {Red :: f(), Green :: f(), Blue :: f()}) ->
6025                            ok
6026
6027       secondaryColor3f(Red :: f(), Green :: f(), Blue :: f()) -> ok
6028
6029       secondaryColor3fv(X1 :: {Red :: f(), Green :: f(), Blue :: f()}) ->
6030                            ok
6031
6032       secondaryColor3i(Red :: i(), Green :: i(), Blue :: i()) -> ok
6033
6034       secondaryColor3iv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) ->
6035                            ok
6036
6037       secondaryColor3s(Red :: i(), Green :: i(), Blue :: i()) -> ok
6038
6039       secondaryColor3sv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) ->
6040                            ok
6041
6042       secondaryColor3ub(Red :: i(), Green :: i(), Blue :: i()) -> ok
6043
6044       secondaryColor3ubv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) ->
6045                             ok
6046
6047       secondaryColor3ui(Red :: i(), Green :: i(), Blue :: i()) -> ok
6048
6049       secondaryColor3uiv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) ->
6050                             ok
6051
6052       secondaryColor3us(Red :: i(), Green :: i(), Blue :: i()) -> ok
6053
6054       secondaryColor3usv(X1 :: {Red :: i(), Green :: i(), Blue :: i()}) ->
6055                             ok
6056
6057              The GL stores both a primary four-valued RGBA color and  a  sec‐
6058              ondary four-valued RGBA color (where alpha is always set to 0.0)
6059              that is associated with every vertex.
6060
6061              External documentation.
6062
6063       secondaryColorPointer(Size :: i(),
6064                             Type :: enum(),
6065                             Stride :: i(),
6066                             Pointer :: offset() | mem()) ->
6067                                ok
6068
6069              gl:secondaryColorPointer/4 specifies the location and data  for‐
6070              mat  of an array of color components to use when rendering. Size
6071              specifies the number of components per color,  and  must  be  3.
6072              Type specifies the data type of each color component, and Stride
6073              specifies the byte stride from one color to the  next,  allowing
6074              vertices  and  attributes  to  be  packed into a single array or
6075              stored in separate arrays.
6076
6077              External documentation.
6078
6079       selectBuffer(Size :: i(), Buffer :: mem()) -> ok
6080
6081              gl:selectBuffer/2 has two arguments: Buffer is a pointer  to  an
6082              array  of  unsigned integers, and Size indicates the size of the
6083              array. Buffer returns values from the name stack  (see  gl:init‐
6084              Names/0,  gl:loadName/1,  gl:pushName/1) when the rendering mode
6085              is ?GL_SELECT (see gl:renderMode/1). gl:selectBuffer/2  must  be
6086              issued  before selection mode is enabled, and it must not be is‐
6087              sued while the rendering mode is ?GL_SELECT.
6088
6089              External documentation.
6090
6091       separableFilter2D(Target, Internalformat, Width, Height, Format,
6092                         Type, Row, Column) ->
6093                            ok
6094
6095              Types:
6096
6097                 Target = Internalformat = enum()
6098                 Width = Height = i()
6099                 Format = Type = enum()
6100                 Row = Column = offset() | mem()
6101
6102              gl:separableFilter2D/8 builds a two-dimensional separable convo‐
6103              lution filter kernel from two arrays of pixels.
6104
6105              External documentation.
6106
6107       shadeModel(Mode :: enum()) -> ok
6108
6109              GL  primitives  can  have  either flat or smooth shading. Smooth
6110              shading, the default, causes the computed colors of vertices  to
6111              be  interpolated  as  the primitive is rasterized, typically as‐
6112              signing different colors to each resulting pixel fragment.  Flat
6113              shading  selects  the  computed color of just one vertex and as‐
6114              signs it to all the pixel fragments generated by  rasterizing  a
6115              single primitive. In either case, the computed color of a vertex
6116              is the result of lighting if lighting is enabled, or it  is  the
6117              current  color  at the time the vertex was specified if lighting
6118              is disabled.
6119
6120              External documentation.
6121
6122       shaderBinary(Shaders :: [i()],
6123                    Binaryformat :: enum(),
6124                    Binary :: binary()) ->
6125                       ok
6126
6127              gl:shaderBinary/3 loads pre-compiled shader binary code into the
6128              Count  shader objects whose handles are given in Shaders. Binary
6129              points to Length bytes of binary shader code  stored  in  client
6130              memory.  BinaryFormat  specifies  the format of the pre-compiled
6131              code.
6132
6133              External documentation.
6134
6135       shaderSource(Shader :: i(), String :: [unicode:chardata()]) -> ok
6136
6137              gl:shaderSource/2 sets the source code in Shader to  the  source
6138              code  in  the  array  of strings specified by String. Any source
6139              code previously stored in the shader object  is  completely  re‐
6140              placed.  The  number  of  strings  in  the array is specified by
6141              Count. If Length is ?NULL, each string is  assumed  to  be  null
6142              terminated.  If Length is a value other than ?NULL, it points to
6143              an array containing a string length for each of the  correspond‐
6144              ing  elements  of  String.  Each element in the Length array may
6145              contain the length of the corresponding string (the null charac‐
6146              ter is not counted as part of the string length) or a value less
6147              than 0 to indicate that  the  string  is  null  terminated.  The
6148              source code strings are not scanned or parsed at this time; they
6149              are simply copied into the specified shader object.
6150
6151              External documentation.
6152
6153       shaderSourceARB(ShaderObj :: i(), String :: [unicode:chardata()]) ->
6154                          ok
6155
6156              No documentation available.
6157
6158       shaderStorageBlockBinding(Program :: i(),
6159                                 StorageBlockIndex :: i(),
6160                                 StorageBlockBinding :: i()) ->
6161                                    ok
6162
6163              gl:shaderStorageBlockBinding/3, changes the active shader  stor‐
6164              age block with an assigned index of StorageBlockIndex in program
6165              object Program. StorageBlockIndex must be an active shader stor‐
6166              age  block  index  in  Program. StorageBlockBinding must be less
6167              than the  value  of  ?GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS.  If
6168              successful,  gl:shaderStorageBlockBinding/3  specifies that Pro‐
6169              gram will use the data store of the buffer object bound  to  the
6170              binding  point  StorageBlockBinding to read and write the values
6171              of the buffer variables in the shader storage  block  identified
6172              by StorageBlockIndex.
6173
6174              External documentation.
6175
6176       stencilFunc(Func :: enum(), Ref :: i(), Mask :: i()) -> ok
6177
6178              Stenciling,  like  depth-buffering, enables and disables drawing
6179              on a per-pixel basis. Stencil planes are first drawn into  using
6180              GL drawing primitives, then geometry and images are rendered us‐
6181              ing the stencil planes to mask out portions of the screen. Sten‐
6182              ciling  is  typically  used in multipass rendering algorithms to
6183              achieve special effects, such as  decals,  outlining,  and  con‐
6184              structive solid geometry rendering.
6185
6186              External documentation.
6187
6188       stencilFuncSeparate(Face :: enum(),
6189                           Func :: enum(),
6190                           Ref :: i(),
6191                           Mask :: i()) ->
6192                              ok
6193
6194              Stenciling,  like  depth-buffering, enables and disables drawing
6195              on a per-pixel basis. You draw into the stencil planes using  GL
6196              drawing  primitives,  then render geometry and images, using the
6197              stencil planes to mask out portions of the screen. Stenciling is
6198              typically used in multipass rendering algorithms to achieve spe‐
6199              cial effects, such as decals, outlining, and constructive  solid
6200              geometry rendering.
6201
6202              External documentation.
6203
6204       stencilMask(Mask :: i()) -> ok
6205
6206              gl:stencilMask/1  controls the writing of individual bits in the
6207              stencil planes. The least significant n bits of Mask, where n is
6208              the  number of bits in the stencil buffer, specify a mask. Where
6209              a 1 appears in the mask, it's possible to write  to  the  corre‐
6210              sponding  bit in the stencil buffer. Where a 0 appears, the cor‐
6211              responding bit is write-protected. Initially, all bits  are  en‐
6212              abled for writing.
6213
6214              External documentation.
6215
6216       stencilMaskSeparate(Face :: enum(), Mask :: i()) -> ok
6217
6218              gl:stencilMaskSeparate/2 controls the writing of individual bits
6219              in the stencil planes. The least significant  n  bits  of  Mask,
6220              where  n  is the number of bits in the stencil buffer, specify a
6221              mask. Where a 1 appears in the mask, it's possible to  write  to
6222              the  corresponding bit in the stencil buffer. Where a 0 appears,
6223              the corresponding bit is write-protected.  Initially,  all  bits
6224              are enabled for writing.
6225
6226              External documentation.
6227
6228       stencilOp(Fail :: enum(), Zfail :: enum(), Zpass :: enum()) -> ok
6229
6230              Stenciling,  like  depth-buffering, enables and disables drawing
6231              on a per-pixel basis. You draw into the stencil planes using  GL
6232              drawing  primitives,  then render geometry and images, using the
6233              stencil planes to mask out portions of the screen. Stenciling is
6234              typically used in multipass rendering algorithms to achieve spe‐
6235              cial effects, such as decals, outlining, and constructive  solid
6236              geometry rendering.
6237
6238              External documentation.
6239
6240       stencilOpSeparate(Face :: enum(),
6241                         Sfail :: enum(),
6242                         Dpfail :: enum(),
6243                         Dppass :: enum()) ->
6244                            ok
6245
6246              Stenciling,  like  depth-buffering, enables and disables drawing
6247              on a per-pixel basis. You draw into the stencil planes using  GL
6248              drawing  primitives,  then render geometry and images, using the
6249              stencil planes to mask out portions of the screen. Stenciling is
6250              typically used in multipass rendering algorithms to achieve spe‐
6251              cial effects, such as decals, outlining, and constructive  solid
6252              geometry rendering.
6253
6254              External documentation.
6255
6256       texBuffer(Target :: enum(),
6257                 Internalformat :: enum(),
6258                 Buffer :: i()) ->
6259                    ok
6260
6261              gl:texBuffer/3 and gl:textureBuffer/3 attaches the data store of
6262              a specified buffer object to a  specified  texture  object,  and
6263              specify  the  storage  format for the texture image found in the
6264              buffer object. The texture object must be a buffer texture.
6265
6266              External documentation.
6267
6268       texBufferRange(Target :: enum(),
6269                      Internalformat :: enum(),
6270                      Buffer :: i(),
6271                      Offset :: i(),
6272                      Size :: i()) ->
6273                         ok
6274
6275              gl:texBufferRange/5 and gl:textureBufferRange/5 attach  a  range
6276              of  the  data  store of a specified buffer object to a specified
6277              texture object, and specify the storage format for  the  texture
6278              image  found  in the buffer object. The texture object must be a
6279              buffer texture.
6280
6281              External documentation.
6282
6283       texCoord1d(S :: f()) -> ok
6284
6285       texCoord1dv(X1 :: {S :: f()}) -> ok
6286
6287       texCoord1f(S :: f()) -> ok
6288
6289       texCoord1fv(X1 :: {S :: f()}) -> ok
6290
6291       texCoord1i(S :: i()) -> ok
6292
6293       texCoord1iv(X1 :: {S :: i()}) -> ok
6294
6295       texCoord1s(S :: i()) -> ok
6296
6297       texCoord1sv(X1 :: {S :: i()}) -> ok
6298
6299       texCoord2d(S :: f(), T :: f()) -> ok
6300
6301       texCoord2dv(X1 :: {S :: f(), T :: f()}) -> ok
6302
6303       texCoord2f(S :: f(), T :: f()) -> ok
6304
6305       texCoord2fv(X1 :: {S :: f(), T :: f()}) -> ok
6306
6307       texCoord2i(S :: i(), T :: i()) -> ok
6308
6309       texCoord2iv(X1 :: {S :: i(), T :: i()}) -> ok
6310
6311       texCoord2s(S :: i(), T :: i()) -> ok
6312
6313       texCoord2sv(X1 :: {S :: i(), T :: i()}) -> ok
6314
6315       texCoord3d(S :: f(), T :: f(), R :: f()) -> ok
6316
6317       texCoord3dv(X1 :: {S :: f(), T :: f(), R :: f()}) -> ok
6318
6319       texCoord3f(S :: f(), T :: f(), R :: f()) -> ok
6320
6321       texCoord3fv(X1 :: {S :: f(), T :: f(), R :: f()}) -> ok
6322
6323       texCoord3i(S :: i(), T :: i(), R :: i()) -> ok
6324
6325       texCoord3iv(X1 :: {S :: i(), T :: i(), R :: i()}) -> ok
6326
6327       texCoord3s(S :: i(), T :: i(), R :: i()) -> ok
6328
6329       texCoord3sv(X1 :: {S :: i(), T :: i(), R :: i()}) -> ok
6330
6331       texCoord4d(S :: f(), T :: f(), R :: f(), Q :: f()) -> ok
6332
6333       texCoord4dv(X1 :: {S :: f(), T :: f(), R :: f(), Q :: f()}) -> ok
6334
6335       texCoord4f(S :: f(), T :: f(), R :: f(), Q :: f()) -> ok
6336
6337       texCoord4fv(X1 :: {S :: f(), T :: f(), R :: f(), Q :: f()}) -> ok
6338
6339       texCoord4i(S :: i(), T :: i(), R :: i(), Q :: i()) -> ok
6340
6341       texCoord4iv(X1 :: {S :: i(), T :: i(), R :: i(), Q :: i()}) -> ok
6342
6343       texCoord4s(S :: i(), T :: i(), R :: i(), Q :: i()) -> ok
6344
6345       texCoord4sv(X1 :: {S :: i(), T :: i(), R :: i(), Q :: i()}) -> ok
6346
6347              gl:texCoord() specifies texture coordinates in one, two,  three,
6348              or  four dimensions. gl:texCoord1() sets the current texture co‐
6349              ordinates to (s 0 0 1); a call to gl:texCoord2() sets them to (s
6350              t  0 1). Similarly, gl:texCoord3() specifies the texture coordi‐
6351              nates as (s t r 1), and gl:texCoord4() defines all  four  compo‐
6352              nents explicitly as (s t r q).
6353
6354              External documentation.
6355
6356       texCoordPointer(Size :: i(),
6357                       Type :: enum(),
6358                       Stride :: i(),
6359                       Ptr :: offset() | mem()) ->
6360                          ok
6361
6362              gl:texCoordPointer/4  specifies  the location and data format of
6363              an array of texture coordinates  to  use  when  rendering.  Size
6364              specifies  the number of coordinates per texture coordinate set,
6365              and must be 1, 2, 3, or 4. Type specifies the data type of  each
6366              texture  coordinate,  and  Stride specifies the byte stride from
6367              one texture coordinate set to the next,  allowing  vertices  and
6368              attributes  to  be packed into a single array or stored in sepa‐
6369              rate arrays. (Single-array storage may be more efficient on some
6370              implementations; see gl:interleavedArrays/3.)
6371
6372              External documentation.
6373
6374       texEnvfv(Target :: enum(), Pname :: enum(), Params :: tuple()) ->
6375                   ok
6376
6377       texEnviv(Target :: enum(), Pname :: enum(), Params :: tuple()) ->
6378                   ok
6379
6380              A  texture  environment  specifies how texture values are inter‐
6381              preted when a fragment is  textured.  When  Target  is  ?GL_TEX‐
6382              TURE_FILTER_CONTROL,  Pname  must  be ?GL_TEXTURE_LOD_BIAS. When
6383              Target is ?GL_TEXTURE_ENV, Pname  can  be  ?GL_TEXTURE_ENV_MODE,
6384              ?GL_TEXTURE_ENV_COLOR,    ?GL_COMBINE_RGB,    ?GL_COMBINE_ALPHA,
6385              ?GL_RGB_SCALE,  ?GL_ALPHA_SCALE,   ?GL_SRC0_RGB,   ?GL_SRC1_RGB,
6386              ?GL_SRC2_RGB, ?GL_SRC0_ALPHA, ?GL_SRC1_ALPHA, or ?GL_SRC2_ALPHA.
6387
6388              External documentation.
6389
6390       texEnvf(Target :: enum(), Pname :: enum(), Param :: f()) -> ok
6391
6392              No documentation available.
6393
6394       texEnvi(Target :: enum(), Pname :: enum(), Param :: i()) -> ok
6395
6396              No documentation available.
6397
6398       texGend(Coord :: enum(), Pname :: enum(), Param :: f()) -> ok
6399
6400       texGendv(Coord :: enum(), Pname :: enum(), Params :: tuple()) ->
6401                   ok
6402
6403       texGenf(Coord :: enum(), Pname :: enum(), Param :: f()) -> ok
6404
6405       texGenfv(Coord :: enum(), Pname :: enum(), Params :: tuple()) ->
6406                   ok
6407
6408       texGeni(Coord :: enum(), Pname :: enum(), Param :: i()) -> ok
6409
6410       texGeniv(Coord :: enum(), Pname :: enum(), Params :: tuple()) ->
6411                   ok
6412
6413              gl:texGen()  selects a texture-coordinate generation function or
6414              supplies coefficients for one of the functions. Coord names  one
6415              of  the  (s, t, r, q) texture coordinates; it must be one of the
6416              symbols ?GL_S, ?GL_T, ?GL_R, or ?GL_Q.  Pname  must  be  one  of
6417              three    symbolic   constants:   ?GL_TEXTURE_GEN_MODE,   ?GL_OB‐
6418              JECT_PLANE, or ?GL_EYE_PLANE. If Pname is  ?GL_TEXTURE_GEN_MODE,
6419              then   Params   chooses   a   mode,  one  of  ?GL_OBJECT_LINEAR,
6420              ?GL_EYE_LINEAR, ?GL_SPHERE_MAP, ?GL_NORMAL_MAP,  or  ?GL_REFLEC‐
6421              TION_MAP.  If Pname is either ?GL_OBJECT_PLANE or ?GL_EYE_PLANE,
6422              Params contains coefficients for the corresponding texture  gen‐
6423              eration function.
6424
6425              External documentation.
6426
6427       texImage1D(Target, Level, InternalFormat, Width, Border, Format,
6428                  Type, Pixels) ->
6429                     ok
6430
6431              Types:
6432
6433                 Target = enum()
6434                 Level = InternalFormat = Width = Border = i()
6435                 Format = Type = enum()
6436                 Pixels = offset() | mem()
6437
6438              Texturing  maps a portion of a specified texture image onto each
6439              graphical primitive for which texturing is  enabled.  To  enable
6440              and  disable  one-dimensional  texturing,  call  gl:enable/1 and
6441              gl:disable/1 with argument ?GL_TEXTURE_1D.
6442
6443              External documentation.
6444
6445       texImage2D(Target, Level, InternalFormat, Width, Height, Border,
6446                  Format, Type, Pixels) ->
6447                     ok
6448
6449              Types:
6450
6451                 Target = enum()
6452                 Level = InternalFormat = Width = Height = Border = i()
6453                 Format = Type = enum()
6454                 Pixels = offset() | mem()
6455
6456              Texturing allows elements of  an  image  array  to  be  read  by
6457              shaders.
6458
6459              External documentation.
6460
6461       texImage2DMultisample(Target, Samples, Internalformat, Width,
6462                             Height, Fixedsamplelocations) ->
6463                                ok
6464
6465              Types:
6466
6467                 Target = enum()
6468                 Samples = i()
6469                 Internalformat = enum()
6470                 Width = Height = i()
6471                 Fixedsamplelocations = 0 | 1
6472
6473              gl:texImage2DMultisample/6 establishes the data storage, format,
6474              dimensions and number of samples of a multisample texture's  im‐
6475              age.
6476
6477              External documentation.
6478
6479       texImage3D(Target, Level, InternalFormat, Width, Height, Depth,
6480                  Border, Format, Type, Pixels) ->
6481                     ok
6482
6483              Types:
6484
6485                 Target = enum()
6486                 Level  =  InternalFormat  = Width = Height = Depth = Border =
6487                 i()
6488                 Format = Type = enum()
6489                 Pixels = offset() | mem()
6490
6491              Texturing maps a portion of a specified texture image onto  each
6492              graphical  primitive  for  which texturing is enabled. To enable
6493              and disable three-dimensional texturing,  call  gl:enable/1  and
6494              gl:disable/1 with argument ?GL_TEXTURE_3D.
6495
6496              External documentation.
6497
6498       texImage3DMultisample(Target, Samples, Internalformat, Width,
6499                             Height, Depth, Fixedsamplelocations) ->
6500                                ok
6501
6502              Types:
6503
6504                 Target = enum()
6505                 Samples = i()
6506                 Internalformat = enum()
6507                 Width = Height = Depth = i()
6508                 Fixedsamplelocations = 0 | 1
6509
6510              gl:texImage3DMultisample/7 establishes the data storage, format,
6511              dimensions and number of samples of a multisample texture's  im‐
6512              age.
6513
6514              External documentation.
6515
6516       texPageCommitmentARB(Target, Level, Xoffset, Yoffset, Zoffset,
6517                            Width, Height, Depth, Commit) ->
6518                               ok
6519
6520              Types:
6521
6522                 Target = enum()
6523                 Level  = Xoffset = Yoffset = Zoffset = Width = Height = Depth
6524                 = i()
6525                 Commit = 0 | 1
6526
6527              No documentation available.
6528
6529       texParameterIiv(Target :: enum(),
6530                       Pname :: enum(),
6531                       Params :: tuple()) ->
6532                          ok
6533
6534       texParameterf(Target :: enum(), Pname :: enum(), Param :: f()) ->
6535                        ok
6536
6537       texParameterfv(Target :: enum(),
6538                      Pname :: enum(),
6539                      Params :: tuple()) ->
6540                         ok
6541
6542       texParameteri(Target :: enum(), Pname :: enum(), Param :: i()) ->
6543                        ok
6544
6545       texParameteriv(Target :: enum(),
6546                      Pname :: enum(),
6547                      Params :: tuple()) ->
6548                         ok
6549
6550              gl:texParameter() and glTextureParameter  assign  the  value  or
6551              values  in  Params  to the texture parameter specified as Pname.
6552              For gl:texParameter(), Target defines the target texture, either
6553              ?GL_TEXTURE_1D,  ?GL_TEXTURE_1D_ARRAY,  ?GL_TEXTURE_2D, ?GL_TEX‐
6554              TURE_2D_ARRAY, ?GL_TEXTURE_2D_MULTISAMPLE, ?GL_TEXTURE_2D_MULTI‐
6555              SAMPLE_ARRAY,   ?GL_TEXTURE_3D,  ?GL_TEXTURE_CUBE_MAP,  ?GL_TEX‐
6556              TURE_CUBE_MAP_ARRAY,  or  ?GL_TEXTURE_RECTANGLE.  The  following
6557              symbols are accepted in Pname:
6558
6559              External documentation.
6560
6561       texParameterIuiv(Target :: enum(),
6562                        Pname :: enum(),
6563                        Params :: tuple()) ->
6564                           ok
6565
6566              No documentation available.
6567
6568       texStorage1D(Target :: enum(),
6569                    Levels :: i(),
6570                    Internalformat :: enum(),
6571                    Width :: i()) ->
6572                       ok
6573
6574              gl:texStorage1D/4 and glTextureStorage1D specify the storage re‐
6575              quirements for all levels of a one-dimensional texture  simulta‐
6576              neously. Once a texture is specified with this command, the for‐
6577              mat and dimensions of all levels become immutable unless it is a
6578              proxy  texture. The contents of the image may still be modified,
6579              however, its storage requirements may not change. Such a texture
6580              is referred to as an immutable-format texture.
6581
6582              External documentation.
6583
6584       texStorage2D(Target :: enum(),
6585                    Levels :: i(),
6586                    Internalformat :: enum(),
6587                    Width :: i(),
6588                    Height :: i()) ->
6589                       ok
6590
6591              gl:texStorage2D/5 and glTextureStorage2D specify the storage re‐
6592              quirements for all levels of a two-dimensional texture  or  one-
6593              dimensional  texture  array  simultaneously.  Once  a texture is
6594              specified with this command, the format and  dimensions  of  all
6595              levels  become  immutable unless it is a proxy texture. The con‐
6596              tents of the image may still be modified, however,  its  storage
6597              requirements may not change. Such a texture is referred to as an
6598              immutable-format texture.
6599
6600              External documentation.
6601
6602       texStorage2DMultisample(Target, Samples, Internalformat, Width,
6603                               Height, Fixedsamplelocations) ->
6604                                  ok
6605
6606              Types:
6607
6608                 Target = enum()
6609                 Samples = i()
6610                 Internalformat = enum()
6611                 Width = Height = i()
6612                 Fixedsamplelocations = 0 | 1
6613
6614              gl:texStorage2DMultisample/6  and  glTextureStorage2DMultisample
6615              specify the storage requirements for a two-dimensional multisam‐
6616              ple texture. Once a texture is specified with this command,  its
6617              format and dimensions become immutable unless it is a proxy tex‐
6618              ture. The contents of the image may still be modified,  however,
6619              its  storage  requirements may not change. Such a texture is re‐
6620              ferred to as an immutable-format texture.
6621
6622              External documentation.
6623
6624       texStorage3D(Target, Levels, Internalformat, Width, Height, Depth) ->
6625                       ok
6626
6627              Types:
6628
6629                 Target = enum()
6630                 Levels = i()
6631                 Internalformat = enum()
6632                 Width = Height = Depth = i()
6633
6634              gl:texStorage3D/6 and glTextureStorage3D specify the storage re‐
6635              quirements  for  all  levels  of a three-dimensional, two-dimen‐
6636              sional array or cube-map array texture  simultaneously.  Once  a
6637              texture  is  specified  with this command, the format and dimen‐
6638              sions of all levels become immutable unless it is a  proxy  tex‐
6639              ture.  The contents of the image may still be modified, however,
6640              its storage requirements may not change. Such a texture  is  re‐
6641              ferred to as an immutable-format texture.
6642
6643              External documentation.
6644
6645       texStorage3DMultisample(Target, Samples, Internalformat, Width,
6646                               Height, Depth, Fixedsamplelocations) ->
6647                                  ok
6648
6649              Types:
6650
6651                 Target = enum()
6652                 Samples = i()
6653                 Internalformat = enum()
6654                 Width = Height = Depth = i()
6655                 Fixedsamplelocations = 0 | 1
6656
6657              gl:texStorage3DMultisample/7  and  glTextureStorage3DMultisample
6658              specify the storage requirements for a two-dimensional multisam‐
6659              ple  array  texture.  Once a texture is specified with this com‐
6660              mand, its format and dimensions become immutable unless it is  a
6661              proxy  texture. The contents of the image may still be modified,
6662              however, its storage requirements may not change. Such a texture
6663              is referred to as an immutable-format texture.
6664
6665              External documentation.
6666
6667       texSubImage1D(Target, Level, Xoffset, Width, Format, Type, Pixels) ->
6668                        ok
6669
6670       texSubImage2D(Target, Level, Xoffset, Yoffset, Width, Height,
6671                     Format, Type, Pixels) ->
6672                        ok
6673
6674       texSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width,
6675                     Height, Depth, Format, Type, Pixels) ->
6676                        ok
6677
6678              Types:
6679
6680                 Target = enum()
6681                 Level  = Xoffset = Yoffset = Zoffset = Width = Height = Depth
6682                 = i()
6683                 Format = Type = enum()
6684                 Pixels = offset() | mem()
6685
6686              No documentation available.
6687
6688       textureBarrier() -> ok
6689
6690              The values of rendered fragments are  undefined  when  a  shader
6691              stage  fetches  texels and the same texels are written via frag‐
6692              ment shader outputs, even if the reads and writes are not in the
6693              same  drawing  command.  To  safely read the result of a written
6694              texel via a texel fetch in a subsequent  drawing  command,  call
6695              gl:textureBarrier/0  between the two drawing commands to guaran‐
6696              tee that writes have completed and caches have been  invalidated
6697              before subsequent drawing commands are executed.
6698
6699              External documentation.
6700
6701       textureBuffer(Texture :: i(),
6702                     Internalformat :: enum(),
6703                     Buffer :: i()) ->
6704                        ok
6705
6706              No documentation available.
6707
6708       textureBufferRange(Texture :: i(),
6709                          Internalformat :: enum(),
6710                          Buffer :: i(),
6711                          Offset :: i(),
6712                          Size :: i()) ->
6713                             ok
6714
6715              No documentation available.
6716
6717       textureView(Texture, Target, Origtexture, Internalformat,
6718                   Minlevel, Numlevels, Minlayer, Numlayers) ->
6719                      ok
6720
6721              Types:
6722
6723                 Texture = i()
6724                 Target = enum()
6725                 Origtexture = i()
6726                 Internalformat = enum()
6727                 Minlevel = Numlevels = Minlayer = Numlayers = i()
6728
6729              gl:textureView/8  initializes  a  texture object as an alias, or
6730              view of another texture object, sharing some or all of the  par‐
6731              ent  texture's  data store with the initialized texture. Texture
6732              specifies a name previously reserved by  a  successful  call  to
6733              gl:genTextures/1 but that has not yet been bound or given a tar‐
6734              get. Target specifies the target for the newly initialized  tex‐
6735              ture  and  must be compatible with the target of the parent tex‐
6736              ture, given in Origtexture as specified in the following table:
6737
6738              External documentation.
6739
6740       transformFeedbackBufferBase(Xfb :: i(),
6741                                   Index :: i(),
6742                                   Buffer :: i()) ->
6743                                      ok
6744
6745              gl:transformFeedbackBufferBase/3 binds the buffer object  Buffer
6746              to  the  binding  point at index Index of the transform feedback
6747              object Xfb.
6748
6749              External documentation.
6750
6751       transformFeedbackBufferRange(Xfb :: i(),
6752                                    Index :: i(),
6753                                    Buffer :: i(),
6754                                    Offset :: i(),
6755                                    Size :: i()) ->
6756                                       ok
6757
6758              gl:transformFeedbackBufferRange/5 binds a range  of  the  buffer
6759              object  Buffer  represented  by  Offset  and Size to the binding
6760              point at index Index of the transform feedback object Xfb.
6761
6762              External documentation.
6763
6764       transformFeedbackVaryings(Program :: i(),
6765                                 Varyings :: [unicode:chardata()],
6766                                 BufferMode :: enum()) ->
6767                                    ok
6768
6769              The names of  the  vertex  or  geometry  shader  outputs  to  be
6770              recorded   in   transform  feedback  mode  are  specified  using
6771              gl:transformFeedbackVaryings/3. When a geometry  shader  is  ac‐
6772              tive, transform feedback records the values of selected geometry
6773              shader output variables from the  emitted  vertices.  Otherwise,
6774              the values of the selected vertex shader outputs are recorded.
6775
6776              External documentation.
6777
6778       translated(X :: f(), Y :: f(), Z :: f()) -> ok
6779
6780       translatef(X :: f(), Y :: f(), Z :: f()) -> ok
6781
6782              gl:translate()  produces  a  translation by (x y z). The current
6783              matrix (see gl:matrixMode/1) is multiplied by  this  translation
6784              matrix,  with  the  product  replacing the current matrix, as if
6785              gl:multMatrix() were called with the following  matrix  for  its
6786              argument:
6787
6788              External documentation.
6789
6790       uniform1d(Location :: i(), X :: f()) -> ok
6791
6792       uniform1dv(Location :: i(), Value :: [f()]) -> ok
6793
6794       uniform1f(Location :: i(), V0 :: f()) -> ok
6795
6796       uniform1fv(Location :: i(), Value :: [f()]) -> ok
6797
6798       uniform1i(Location :: i(), V0 :: i()) -> ok
6799
6800       uniform1iv(Location :: i(), Value :: [i()]) -> ok
6801
6802       uniform1ui(Location :: i(), V0 :: i()) -> ok
6803
6804       uniform1uiv(Location :: i(), Value :: [i()]) -> ok
6805
6806       uniform2d(Location :: i(), X :: f(), Y :: f()) -> ok
6807
6808       uniform2dv(Location :: i(), Value :: [{f(), f()}]) -> ok
6809
6810       uniform2f(Location :: i(), V0 :: f(), V1 :: f()) -> ok
6811
6812       uniform2fv(Location :: i(), Value :: [{f(), f()}]) -> ok
6813
6814       uniform2i(Location :: i(), V0 :: i(), V1 :: i()) -> ok
6815
6816       uniform2iv(Location :: i(), Value :: [{i(), i()}]) -> ok
6817
6818       uniform2ui(Location :: i(), V0 :: i(), V1 :: i()) -> ok
6819
6820       uniform2uiv(Location :: i(), Value :: [{i(), i()}]) -> ok
6821
6822       uniform3d(Location :: i(), X :: f(), Y :: f(), Z :: f()) -> ok
6823
6824       uniform3dv(Location :: i(), Value :: [{f(), f(), f()}]) -> ok
6825
6826       uniform3f(Location :: i(), V0 :: f(), V1 :: f(), V2 :: f()) -> ok
6827
6828       uniform3fv(Location :: i(), Value :: [{f(), f(), f()}]) -> ok
6829
6830       uniform3i(Location :: i(), V0 :: i(), V1 :: i(), V2 :: i()) -> ok
6831
6832       uniform3iv(Location :: i(), Value :: [{i(), i(), i()}]) -> ok
6833
6834       uniform3ui(Location :: i(), V0 :: i(), V1 :: i(), V2 :: i()) -> ok
6835
6836       uniform3uiv(Location :: i(), Value :: [{i(), i(), i()}]) -> ok
6837
6838       uniform4d(Location :: i(), X :: f(), Y :: f(), Z :: f(), W :: f()) ->
6839                    ok
6840
6841       uniform4dv(Location :: i(), Value :: [{f(), f(), f(), f()}]) -> ok
6842
6843       uniform4f(Location :: i(),
6844                 V0 :: f(),
6845                 V1 :: f(),
6846                 V2 :: f(),
6847                 V3 :: f()) ->
6848                    ok
6849
6850       uniform4fv(Location :: i(), Value :: [{f(), f(), f(), f()}]) -> ok
6851
6852       uniform4i(Location :: i(),
6853                 V0 :: i(),
6854                 V1 :: i(),
6855                 V2 :: i(),
6856                 V3 :: i()) ->
6857                    ok
6858
6859       uniform4iv(Location :: i(), Value :: [{i(), i(), i(), i()}]) -> ok
6860
6861       uniform4ui(Location :: i(),
6862                  V0 :: i(),
6863                  V1 :: i(),
6864                  V2 :: i(),
6865                  V3 :: i()) ->
6866                     ok
6867
6868       uniform4uiv(Location :: i(), Value :: [{i(), i(), i(), i()}]) ->
6869                      ok
6870
6871       uniformMatrix2dv(Location :: i(),
6872                        Transpose :: 0 | 1,
6873                        Value :: [{f(), f(), f(), f()}]) ->
6874                           ok
6875
6876       uniformMatrix2fv(Location :: i(),
6877                        Transpose :: 0 | 1,
6878                        Value :: [{f(), f(), f(), f()}]) ->
6879                           ok
6880
6881       uniformMatrix2x3dv(Location :: i(),
6882                          Transpose :: 0 | 1,
6883                          Value :: [{f(), f(), f(), f(), f(), f()}]) ->
6884                             ok
6885
6886       uniformMatrix2x3fv(Location :: i(),
6887                          Transpose :: 0 | 1,
6888                          Value :: [{f(), f(), f(), f(), f(), f()}]) ->
6889                             ok
6890
6891       uniformMatrix2x4dv(Location :: i(),
6892                          Transpose :: 0 | 1,
6893                          Value ::
6894                              [{f(), f(), f(), f(), f(), f(), f(), f()}]) ->
6895                             ok
6896
6897       uniformMatrix2x4fv(Location :: i(),
6898                          Transpose :: 0 | 1,
6899                          Value ::
6900                              [{f(), f(), f(), f(), f(), f(), f(), f()}]) ->
6901                             ok
6902
6903       uniformMatrix3dv(Location :: i(),
6904                        Transpose :: 0 | 1,
6905                        Value ::
6906                            [{f(),
6907                              f(),
6908                              f(),
6909                              f(),
6910                              f(),
6911                              f(),
6912                              f(),
6913                              f(),
6914                              f()}]) ->
6915                           ok
6916
6917       uniformMatrix3fv(Location :: i(),
6918                        Transpose :: 0 | 1,
6919                        Value ::
6920                            [{f(),
6921                              f(),
6922                              f(),
6923                              f(),
6924                              f(),
6925                              f(),
6926                              f(),
6927                              f(),
6928                              f()}]) ->
6929                           ok
6930
6931       uniformMatrix3x2dv(Location :: i(),
6932                          Transpose :: 0 | 1,
6933                          Value :: [{f(), f(), f(), f(), f(), f()}]) ->
6934                             ok
6935
6936       uniformMatrix3x2fv(Location :: i(),
6937                          Transpose :: 0 | 1,
6938                          Value :: [{f(), f(), f(), f(), f(), f()}]) ->
6939                             ok
6940
6941       uniformMatrix3x4dv(Location, Transpose, Value) -> ok
6942
6943       uniformMatrix3x4fv(Location, Transpose, Value) -> ok
6944
6945       uniformMatrix4dv(Location, Transpose, Value) -> ok
6946
6947       uniformMatrix4fv(Location, Transpose, Value) -> ok
6948
6949       uniformMatrix4x2dv(Location :: i(),
6950                          Transpose :: 0 | 1,
6951                          Value ::
6952                              [{f(), f(), f(), f(), f(), f(), f(), f()}]) ->
6953                             ok
6954
6955       uniformMatrix4x2fv(Location :: i(),
6956                          Transpose :: 0 | 1,
6957                          Value ::
6958                              [{f(), f(), f(), f(), f(), f(), f(), f()}]) ->
6959                             ok
6960
6961       uniformMatrix4x3dv(Location, Transpose, Value) -> ok
6962
6963       uniformMatrix4x3fv(Location, Transpose, Value) -> ok
6964
6965              Types:
6966
6967                 Location = i()
6968                 Transpose = 0 | 1
6969                 Value =
6970                     [{f(),  f(), f(), f(), f(), f(), f(), f(), f(), f(), f(),
6971                 f()}]
6972
6973              gl:uniform() modifies the value of a uniform variable or a  uni‐
6974              form  variable array. The location of the uniform variable to be
6975              modified is specified by Location, which should be a  value  re‐
6976              turned  by gl:getUniformLocation/2. gl:uniform() operates on the
6977              program object that was made part of current  state  by  calling
6978              gl:useProgram/1.
6979
6980              External documentation.
6981
6982       uniform1i64vARB(Location :: i(), Value :: [i()]) -> ok
6983
6984              No documentation available.
6985
6986       uniform1i64ARB(Location :: i(), X :: i()) -> ok
6987
6988              No documentation available.
6989
6990       uniform1ui64vARB(Location :: i(), Value :: [i()]) -> ok
6991
6992              No documentation available.
6993
6994       uniform1ui64ARB(Location :: i(), X :: i()) -> ok
6995
6996              No documentation available.
6997
6998       uniform2i64vARB(Location :: i(), Value :: [{i(), i()}]) -> ok
6999
7000              No documentation available.
7001
7002       uniform2i64ARB(Location :: i(), X :: i(), Y :: i()) -> ok
7003
7004              No documentation available.
7005
7006       uniform2ui64vARB(Location :: i(), Value :: [{i(), i()}]) -> ok
7007
7008              No documentation available.
7009
7010       uniform2ui64ARB(Location :: i(), X :: i(), Y :: i()) -> ok
7011
7012              No documentation available.
7013
7014       uniform3i64vARB(Location :: i(), Value :: [{i(), i(), i()}]) -> ok
7015
7016              No documentation available.
7017
7018       uniform3i64ARB(Location :: i(), X :: i(), Y :: i(), Z :: i()) ->
7019                         ok
7020
7021              No documentation available.
7022
7023       uniform3ui64vARB(Location :: i(), Value :: [{i(), i(), i()}]) ->
7024                           ok
7025
7026              No documentation available.
7027
7028       uniform3ui64ARB(Location :: i(), X :: i(), Y :: i(), Z :: i()) ->
7029                          ok
7030
7031              No documentation available.
7032
7033       uniform4i64vARB(Location :: i(), Value :: [{i(), i(), i(), i()}]) ->
7034                          ok
7035
7036              No documentation available.
7037
7038       uniform4i64ARB(Location :: i(),
7039                      X :: i(),
7040                      Y :: i(),
7041                      Z :: i(),
7042                      W :: i()) ->
7043                         ok
7044
7045              No documentation available.
7046
7047       uniform4ui64vARB(Location :: i(), Value :: [{i(), i(), i(), i()}]) ->
7048                           ok
7049
7050              No documentation available.
7051
7052       uniform4ui64ARB(Location :: i(),
7053                       X :: i(),
7054                       Y :: i(),
7055                       Z :: i(),
7056                       W :: i()) ->
7057                          ok
7058
7059              No documentation available.
7060
7061       uniformBlockBinding(Program :: i(),
7062                           UniformBlockIndex :: i(),
7063                           UniformBlockBinding :: i()) ->
7064                              ok
7065
7066              Binding  points  for  active  uniform  blocks are assigned using
7067              gl:uniformBlockBinding/3. Each of  a  program's  active  uniform
7068              blocks has a corresponding uniform buffer binding point. Program
7069              is  the  name  of  a  program  object  for  which  the   command
7070              gl:linkProgram/1 has been issued in the past.
7071
7072              External documentation.
7073
7074       uniformHandleui64ARB(Location :: i(), Value :: i()) -> ok
7075
7076              No documentation available.
7077
7078       uniformSubroutinesuiv(Shadertype :: enum(), Indices :: [i()]) ->
7079                                ok
7080
7081              gl:uniformSubroutines() loads all active subroutine uniforms for
7082              shader stage Shadertype of the current program  with  subroutine
7083              indices from Indices, storing Indices[i] into the uniform at lo‐
7084              cation I. Count must be equal to the value of ?GL_ACTIVE_SUBROU‐
7085              TINE_UNIFORM_LOCATIONS  for  the  program  currently  in  use at
7086              shader stage Shadertype. Furthermore, all values in Indices must
7087              be  less than the value of ?GL_ACTIVE_SUBROUTINES for the shader
7088              stage.
7089
7090              External documentation.
7091
7092       useProgram(Program :: i()) -> ok
7093
7094              gl:useProgram/1 installs the program object specified by Program
7095              as  part of current rendering state. One or more executables are
7096              created in a program object by successfully attaching shader ob‐
7097              jects  to  it with gl:attachShader/2, successfully compiling the
7098              shader objects with gl:compileShader/1, and successfully linking
7099              the program object with gl:linkProgram/1.
7100
7101              External documentation.
7102
7103       useProgramObjectARB(ProgramObj :: i()) -> ok
7104
7105              No documentation available.
7106
7107       useProgramStages(Pipeline :: i(), Stages :: i(), Program :: i()) ->
7108                           ok
7109
7110              gl:useProgramStages/3  binds  executables  from a program object
7111              associated with a specified set of shader stages to the  program
7112              pipeline  object  given by Pipeline. Pipeline specifies the pro‐
7113              gram pipeline object to which to bind  the  executables.  Stages
7114              contains  a  logical  combination  of bits indicating the shader
7115              stages to use within Program with the  program  pipeline  object
7116              Pipeline.  Stages  must  be  a  logical  combination of ?GL_VER‐
7117              TEX_SHADER_BIT,  ?GL_TESS_CONTROL_SHADER_BIT,   ?GL_TESS_EVALUA‐
7118              TION_SHADER_BIT,        ?GL_GEOMETRY_SHADER_BIT,       ?GL_FRAG‐
7119              MENT_SHADER_BIT and  ?GL_COMPUTE_SHADER_BIT.  Additionally,  the
7120              special  value  ?GL_ALL_SHADER_BITS may be specified to indicate
7121              that all executables contained in Program should be installed in
7122              Pipeline.
7123
7124              External documentation.
7125
7126       validateProgram(Program :: i()) -> ok
7127
7128              gl:validateProgram/1  checks to see whether the executables con‐
7129              tained in Program can execute given the  current  OpenGL  state.
7130              The  information  generated  by  the  validation process will be
7131              stored in Program's information log. The validation  information
7132              may consist of an empty string, or it may be a string containing
7133              information about how the current program object interacts  with
7134              the rest of current OpenGL state. This provides a way for OpenGL
7135              implementers to convey more information about  why  the  current
7136              program  is  inefficient, suboptimal, failing to execute, and so
7137              on.
7138
7139              External documentation.
7140
7141       validateProgramARB(ProgramObj :: i()) -> ok
7142
7143              No documentation available.
7144
7145       validateProgramPipeline(Pipeline :: i()) -> ok
7146
7147              gl:validateProgramPipeline/1  instructs  the  implementation  to
7148              validate  the  shader  executables contained in Pipeline against
7149              the current GL state. The implementation may use this as an  op‐
7150              portunity  to perform any internal shader modifications that may
7151              be required to ensure correct operation of the installed shaders
7152              given the current GL state.
7153
7154              External documentation.
7155
7156       vertex2d(X :: f(), Y :: f()) -> ok
7157
7158       vertex2dv(X1 :: {X :: f(), Y :: f()}) -> ok
7159
7160       vertex2f(X :: f(), Y :: f()) -> ok
7161
7162       vertex2fv(X1 :: {X :: f(), Y :: f()}) -> ok
7163
7164       vertex2i(X :: i(), Y :: i()) -> ok
7165
7166       vertex2iv(X1 :: {X :: i(), Y :: i()}) -> ok
7167
7168       vertex2s(X :: i(), Y :: i()) -> ok
7169
7170       vertex2sv(X1 :: {X :: i(), Y :: i()}) -> ok
7171
7172       vertex3d(X :: f(), Y :: f(), Z :: f()) -> ok
7173
7174       vertex3dv(X1 :: {X :: f(), Y :: f(), Z :: f()}) -> ok
7175
7176       vertex3f(X :: f(), Y :: f(), Z :: f()) -> ok
7177
7178       vertex3fv(X1 :: {X :: f(), Y :: f(), Z :: f()}) -> ok
7179
7180       vertex3i(X :: i(), Y :: i(), Z :: i()) -> ok
7181
7182       vertex3iv(X1 :: {X :: i(), Y :: i(), Z :: i()}) -> ok
7183
7184       vertex3s(X :: i(), Y :: i(), Z :: i()) -> ok
7185
7186       vertex3sv(X1 :: {X :: i(), Y :: i(), Z :: i()}) -> ok
7187
7188       vertex4d(X :: f(), Y :: f(), Z :: f(), W :: f()) -> ok
7189
7190       vertex4dv(X1 :: {X :: f(), Y :: f(), Z :: f(), W :: f()}) -> ok
7191
7192       vertex4f(X :: f(), Y :: f(), Z :: f(), W :: f()) -> ok
7193
7194       vertex4fv(X1 :: {X :: f(), Y :: f(), Z :: f(), W :: f()}) -> ok
7195
7196       vertex4i(X :: i(), Y :: i(), Z :: i(), W :: i()) -> ok
7197
7198       vertex4iv(X1 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) -> ok
7199
7200       vertex4s(X :: i(), Y :: i(), Z :: i(), W :: i()) -> ok
7201
7202       vertex4sv(X1 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) -> ok
7203
7204              gl:vertex()  commands  are  used  within gl:'begin'/1/gl:'end'/0
7205              pairs to specify point, line, and polygon vertices. The  current
7206              color, normal, texture coordinates, and fog coordinate are asso‐
7207              ciated with the vertex when gl:vertex() is called.
7208
7209              External documentation.
7210
7211       vertexArrayAttribBinding(Vaobj :: i(),
7212                                Attribindex :: i(),
7213                                Bindingindex :: i()) ->
7214                                   ok
7215
7216              No documentation available.
7217
7218       vertexArrayAttribFormat(Vaobj, Attribindex, Size, Type,
7219                               Normalized, Relativeoffset) ->
7220                                  ok
7221
7222              Types:
7223
7224                 Vaobj = Attribindex = Size = i()
7225                 Type = enum()
7226                 Normalized = 0 | 1
7227                 Relativeoffset = i()
7228
7229              No documentation available.
7230
7231       vertexArrayAttribIFormat(Vaobj :: i(),
7232                                Attribindex :: i(),
7233                                Size :: i(),
7234                                Type :: enum(),
7235                                Relativeoffset :: i()) ->
7236                                   ok
7237
7238              No documentation available.
7239
7240       vertexArrayAttribLFormat(Vaobj :: i(),
7241                                Attribindex :: i(),
7242                                Size :: i(),
7243                                Type :: enum(),
7244                                Relativeoffset :: i()) ->
7245                                   ok
7246
7247              No documentation available.
7248
7249       vertexArrayBindingDivisor(Vaobj :: i(),
7250                                 Bindingindex :: i(),
7251                                 Divisor :: i()) ->
7252                                    ok
7253
7254              No documentation available.
7255
7256       vertexArrayElementBuffer(Vaobj :: i(), Buffer :: i()) -> ok
7257
7258              gl:vertexArrayElementBuffer/2 binds a buffer object with id Buf‐
7259              fer to the element array buffer bind point of a vertex array ob‐
7260              ject with id Vaobj. If Buffer is zero, any existing element  ar‐
7261              ray buffer binding to Vaobj is removed.
7262
7263              External documentation.
7264
7265       vertexArrayVertexBuffer(Vaobj :: i(),
7266                               Bindingindex :: i(),
7267                               Buffer :: i(),
7268                               Offset :: i(),
7269                               Stride :: i()) ->
7270                                  ok
7271
7272              No documentation available.
7273
7274       vertexArrayVertexBuffers(Vaobj :: i(),
7275                                First :: i(),
7276                                Buffers :: [i()],
7277                                Offsets :: [i()],
7278                                Strides :: [i()]) ->
7279                                   ok
7280
7281              No documentation available.
7282
7283       vertexAttrib1d(Index :: i(), X :: f()) -> ok
7284
7285       vertexAttrib1dv(Index :: i(), X2 :: {X :: f()}) -> ok
7286
7287       vertexAttrib1f(Index :: i(), X :: f()) -> ok
7288
7289       vertexAttrib1fv(Index :: i(), X2 :: {X :: f()}) -> ok
7290
7291       vertexAttrib1s(Index :: i(), X :: i()) -> ok
7292
7293       vertexAttrib1sv(Index :: i(), X2 :: {X :: i()}) -> ok
7294
7295       vertexAttrib2d(Index :: i(), X :: f(), Y :: f()) -> ok
7296
7297       vertexAttrib2dv(Index :: i(), X2 :: {X :: f(), Y :: f()}) -> ok
7298
7299       vertexAttrib2f(Index :: i(), X :: f(), Y :: f()) -> ok
7300
7301       vertexAttrib2fv(Index :: i(), X2 :: {X :: f(), Y :: f()}) -> ok
7302
7303       vertexAttrib2s(Index :: i(), X :: i(), Y :: i()) -> ok
7304
7305       vertexAttrib2sv(Index :: i(), X2 :: {X :: i(), Y :: i()}) -> ok
7306
7307       vertexAttrib3d(Index :: i(), X :: f(), Y :: f(), Z :: f()) -> ok
7308
7309       vertexAttrib3dv(Index :: i(),
7310                       X2 :: {X :: f(), Y :: f(), Z :: f()}) ->
7311                          ok
7312
7313       vertexAttrib3f(Index :: i(), X :: f(), Y :: f(), Z :: f()) -> ok
7314
7315       vertexAttrib3fv(Index :: i(),
7316                       X2 :: {X :: f(), Y :: f(), Z :: f()}) ->
7317                          ok
7318
7319       vertexAttrib3s(Index :: i(), X :: i(), Y :: i(), Z :: i()) -> ok
7320
7321       vertexAttrib3sv(Index :: i(),
7322                       X2 :: {X :: i(), Y :: i(), Z :: i()}) ->
7323                          ok
7324
7325       vertexAttrib4Nbv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7326
7327       vertexAttrib4Niv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7328
7329       vertexAttrib4Nsv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7330
7331       vertexAttrib4Nub(Index :: i(),
7332                        X :: i(),
7333                        Y :: i(),
7334                        Z :: i(),
7335                        W :: i()) ->
7336                           ok
7337
7338       vertexAttrib4Nubv(Index :: i(),
7339                         X2 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) ->
7340                            ok
7341
7342       vertexAttrib4Nuiv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7343
7344       vertexAttrib4Nusv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7345
7346       vertexAttrib4bv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7347
7348       vertexAttrib4d(Index :: i(),
7349                      X :: f(),
7350                      Y :: f(),
7351                      Z :: f(),
7352                      W :: f()) ->
7353                         ok
7354
7355       vertexAttrib4dv(Index :: i(),
7356                       X2 :: {X :: f(), Y :: f(), Z :: f(), W :: f()}) ->
7357                          ok
7358
7359       vertexAttrib4f(Index :: i(),
7360                      X :: f(),
7361                      Y :: f(),
7362                      Z :: f(),
7363                      W :: f()) ->
7364                         ok
7365
7366       vertexAttrib4fv(Index :: i(),
7367                       X2 :: {X :: f(), Y :: f(), Z :: f(), W :: f()}) ->
7368                          ok
7369
7370       vertexAttrib4iv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7371
7372       vertexAttrib4s(Index :: i(),
7373                      X :: i(),
7374                      Y :: i(),
7375                      Z :: i(),
7376                      W :: i()) ->
7377                         ok
7378
7379       vertexAttrib4sv(Index :: i(),
7380                       X2 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) ->
7381                          ok
7382
7383       vertexAttrib4ubv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7384
7385       vertexAttrib4uiv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7386
7387       vertexAttrib4usv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7388
7389       vertexAttribI1i(Index :: i(), X :: i()) -> ok
7390
7391       vertexAttribI1iv(Index :: i(), X2 :: {X :: i()}) -> ok
7392
7393       vertexAttribI1ui(Index :: i(), X :: i()) -> ok
7394
7395       vertexAttribI1uiv(Index :: i(), X2 :: {X :: i()}) -> ok
7396
7397       vertexAttribI2i(Index :: i(), X :: i(), Y :: i()) -> ok
7398
7399       vertexAttribI2iv(Index :: i(), X2 :: {X :: i(), Y :: i()}) -> ok
7400
7401       vertexAttribI2ui(Index :: i(), X :: i(), Y :: i()) -> ok
7402
7403       vertexAttribI2uiv(Index :: i(), X2 :: {X :: i(), Y :: i()}) -> ok
7404
7405       vertexAttribI3i(Index :: i(), X :: i(), Y :: i(), Z :: i()) -> ok
7406
7407       vertexAttribI3iv(Index :: i(),
7408                        X2 :: {X :: i(), Y :: i(), Z :: i()}) ->
7409                           ok
7410
7411       vertexAttribI3ui(Index :: i(), X :: i(), Y :: i(), Z :: i()) -> ok
7412
7413       vertexAttribI3uiv(Index :: i(),
7414                         X2 :: {X :: i(), Y :: i(), Z :: i()}) ->
7415                            ok
7416
7417       vertexAttribI4bv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7418
7419       vertexAttribI4i(Index :: i(),
7420                       X :: i(),
7421                       Y :: i(),
7422                       Z :: i(),
7423                       W :: i()) ->
7424                          ok
7425
7426       vertexAttribI4iv(Index :: i(),
7427                        X2 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) ->
7428                           ok
7429
7430       vertexAttribI4sv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7431
7432       vertexAttribI4ubv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7433
7434       vertexAttribI4ui(Index :: i(),
7435                        X :: i(),
7436                        Y :: i(),
7437                        Z :: i(),
7438                        W :: i()) ->
7439                           ok
7440
7441       vertexAttribI4uiv(Index :: i(),
7442                         X2 :: {X :: i(), Y :: i(), Z :: i(), W :: i()}) ->
7443                            ok
7444
7445       vertexAttribI4usv(Index :: i(), V :: {i(), i(), i(), i()}) -> ok
7446
7447              The  gl:vertexAttrib() family of entry points allows an applica‐
7448              tion to pass generic vertex attributes in numbered locations.
7449
7450              External documentation.
7451
7452       vertexAttribBinding(Attribindex :: i(), Bindingindex :: i()) -> ok
7453
7454              gl:vertexAttribBinding/2 and  gl:vertexArrayAttribBinding/3  es‐
7455              tablishes an association between the generic vertex attribute of
7456              a vertex array object whose index is given by Attribindex, and a
7457              vertex  buffer binding whose index is given by Bindingindex. For
7458              gl:vertexAttribBinding/2, the vertex array  object  affected  is
7459              that  currently  bound. For gl:vertexArrayAttribBinding/3, Vaobj
7460              is the name of the vertex array object.
7461
7462              External documentation.
7463
7464       vertexAttribDivisor(Index :: i(), Divisor :: i()) -> ok
7465
7466              gl:vertexAttribDivisor/2 modifies the rate at which generic ver‐
7467              tex  attributes  advance  when  rendering  multiple instances of
7468              primitives in a single draw call. If Divisor is zero, the attri‐
7469              bute  at slot Index advances once per vertex. If Divisor is non-
7470              zero, the attribute advances once per Divisor instances  of  the
7471              set(s)  of  vertices being rendered. An attribute is referred to
7472              as instanced if  its  ?GL_VERTEX_ATTRIB_ARRAY_DIVISOR  value  is
7473              non-zero.
7474
7475              External documentation.
7476
7477       vertexAttribFormat(Attribindex :: i(),
7478                          Size :: i(),
7479                          Type :: enum(),
7480                          Normalized :: 0 | 1,
7481                          Relativeoffset :: i()) ->
7482                             ok
7483
7484              gl:vertexAttribFormat/5, gl:vertexAttribIFormat/4 and gl:vertex‐
7485              AttribLFormat/4,  as   well   as   gl:vertexArrayAttribFormat/6,
7486              gl:vertexArrayAttribIFormat/5  and gl:vertexArrayAttribLFormat/5
7487              specify the organization of data in  vertex  arrays.  The  first
7488              three  calls  operate  on the bound vertex array object, whereas
7489              the last three ones modify the state of a  vertex  array  object
7490              with  ID  Vaobj.  Attribindex specifies the index of the generic
7491              vertex attribute array whose data layout is being described, and
7492              must be less than the value of ?GL_MAX_VERTEX_ATTRIBS.
7493
7494              External documentation.
7495
7496       vertexAttribIFormat(Attribindex :: i(),
7497                           Size :: i(),
7498                           Type :: enum(),
7499                           Relativeoffset :: i()) ->
7500                              ok
7501
7502              No documentation available.
7503
7504       vertexAttribIPointer(Index :: i(),
7505                            Size :: i(),
7506                            Type :: enum(),
7507                            Stride :: i(),
7508                            Pointer :: offset() | mem()) ->
7509                               ok
7510
7511              No documentation available.
7512
7513       vertexAttribL1d(Index :: i(), X :: f()) -> ok
7514
7515       vertexAttribL1dv(Index :: i(), X2 :: {X :: f()}) -> ok
7516
7517       vertexAttribL2d(Index :: i(), X :: f(), Y :: f()) -> ok
7518
7519       vertexAttribL2dv(Index :: i(), X2 :: {X :: f(), Y :: f()}) -> ok
7520
7521       vertexAttribL3d(Index :: i(), X :: f(), Y :: f(), Z :: f()) -> ok
7522
7523       vertexAttribL3dv(Index :: i(),
7524                        X2 :: {X :: f(), Y :: f(), Z :: f()}) ->
7525                           ok
7526
7527       vertexAttribL4d(Index :: i(),
7528                       X :: f(),
7529                       Y :: f(),
7530                       Z :: f(),
7531                       W :: f()) ->
7532                          ok
7533
7534       vertexAttribL4dv(Index :: i(),
7535                        X2 :: {X :: f(), Y :: f(), Z :: f(), W :: f()}) ->
7536                           ok
7537
7538              No documentation available.
7539
7540       vertexAttribLFormat(Attribindex :: i(),
7541                           Size :: i(),
7542                           Type :: enum(),
7543                           Relativeoffset :: i()) ->
7544                              ok
7545
7546              No documentation available.
7547
7548       vertexAttribLPointer(Index :: i(),
7549                            Size :: i(),
7550                            Type :: enum(),
7551                            Stride :: i(),
7552                            Pointer :: offset() | mem()) ->
7553                               ok
7554
7555              No documentation available.
7556
7557       vertexAttribPointer(Index, Size, Type, Normalized, Stride,
7558                           Pointer) ->
7559                              ok
7560
7561              Types:
7562
7563                 Index = Size = i()
7564                 Type = enum()
7565                 Normalized = 0 | 1
7566                 Stride = i()
7567                 Pointer = offset() | mem()
7568
7569              gl:vertexAttribPointer/6,  gl:vertexAttribIPointer/5 and gl:ver‐
7570              texAttribLPointer/5 specify the location and data format of  the
7571              array  of  generic  vertex attributes at index Index to use when
7572              rendering. Size specifies the number of components per attribute
7573              and  must  be  1,  2, 3, 4, or ?GL_BGRA. Type specifies the data
7574              type of each component, and Stride  specifies  the  byte  stride
7575              from one attribute to the next, allowing vertices and attributes
7576              to be packed into a single array or stored in separate arrays.
7577
7578              External documentation.
7579
7580       vertexBindingDivisor(Bindingindex :: i(), Divisor :: i()) -> ok
7581
7582              gl:vertexBindingDivisor/2   and   gl:vertexArrayBindingDivisor/3
7583              modify  the rate at which generic vertex attributes advance when
7584              rendering multiple instances of primitives in a single draw com‐
7585              mand.  If Divisor is zero, the attributes using the buffer bound
7586              to Bindingindex advance once per vertex. If Divisor is non-zero,
7587              the  attributes advance once per Divisor instances of the set(s)
7588              of vertices being rendered. An attribute is referred to  as  in‐
7589              stanced if the corresponding Divisor value is non-zero.
7590
7591              External documentation.
7592
7593       vertexBlendARB(Count :: i()) -> ok
7594
7595              No documentation available.
7596
7597       vertexPointer(Size :: i(),
7598                     Type :: enum(),
7599                     Stride :: i(),
7600                     Ptr :: offset() | mem()) ->
7601                        ok
7602
7603              gl:vertexPointer/4  specifies the location and data format of an
7604              array of vertex coordinates to use when rendering.  Size  speci‐
7605              fies  the number of coordinates per vertex, and must be 2, 3, or
7606              4. Type specifies the data type of each coordinate,  and  Stride
7607              specifies  the byte stride from one vertex to the next, allowing
7608              vertices and attributes to be packed  into  a  single  array  or
7609              stored in separate arrays. (Single-array storage may be more ef‐
7610              ficient on some implementations; see gl:interleavedArrays/3.)
7611
7612              External documentation.
7613
7614       viewport(X :: i(), Y :: i(), Width :: i(), Height :: i()) -> ok
7615
7616              gl:viewport/4 specifies the affine transformation  of  x  and  y
7617              from normalized device coordinates to window coordinates. Let (x
7618              nd y nd) be normalized device coordinates. Then the window coor‐
7619              dinates (x w y w) are computed as follows:
7620
7621              External documentation.
7622
7623       viewportArrayv(First :: i(), V :: [{f(), f(), f(), f()}]) -> ok
7624
7625              No documentation available.
7626
7627       viewportIndexedf(Index :: i(),
7628                        X :: f(),
7629                        Y :: f(),
7630                        W :: f(),
7631                        H :: f()) ->
7632                           ok
7633
7634       viewportIndexedfv(Index :: i(), V :: {f(), f(), f(), f()}) -> ok
7635
7636              gl:viewportIndexedf/5 and gl:viewportIndexedfv/2 specify the pa‐
7637              rameters for a single viewport. Index specifies the index of the
7638              viewport  to  modify.  Index  must  be  less  than  the value of
7639              ?GL_MAX_VIEWPORTS. For gl:viewportIndexedf/5, X,  Y,  W,  and  H
7640              specify  the  left,  bottom, width and height of the viewport in
7641              pixels, respectively. For gl:viewportIndexedfv/2, V contains the
7642              address of an array of floating point values specifying the left
7643              ( x), bottom ( y), width ( w), and height ( h) of each viewport,
7644              in that order. x and y give the location of the viewport's lower
7645              left corner, and w and h give the width and height of the  view‐
7646              port,  respectively. The viewport specifies the affine transfor‐
7647              mation of x and y from normalized device coordinates  to  window
7648              coordinates.  Let  (x nd y nd) be normalized device coordinates.
7649              Then the window coordinates (x w y w) are computed as follows:
7650
7651              External documentation.
7652
7653       waitSync(Sync :: i(), Flags :: i(), Timeout :: i()) -> ok
7654
7655              gl:waitSync/3 causes the GL server to block and wait until  Sync
7656              becomes  signaled.  Sync  is the name of an existing sync object
7657              upon which to wait. Flags and Timeout are currently not used and
7658              must  be  set to zero and the special value ?GL_TIMEOUT_IGNORED,
7659              respectively
7660
7661              Flags and Timeout are placeholders for anticipated future exten‐
7662              sions of sync object capabilities. They must have these reserved
7663              values in order that existing code calling gl:waitSync/3 operate
7664              properly in the presence of such extensions.
7665
7666              External documentation.
7667
7668       weightbvARB(Weights :: [i()]) -> ok
7669
7670       weightdvARB(Weights :: [f()]) -> ok
7671
7672       weightfvARB(Weights :: [f()]) -> ok
7673
7674       weightivARB(Weights :: [i()]) -> ok
7675
7676       weightsvARB(Weights :: [i()]) -> ok
7677
7678       weightubvARB(Weights :: [i()]) -> ok
7679
7680       weightuivARB(Weights :: [i()]) -> ok
7681
7682       weightusvARB(Weights :: [i()]) -> ok
7683
7684              No documentation available.
7685
7686       windowPos2d(X :: f(), Y :: f()) -> ok
7687
7688       windowPos2dv(X1 :: {X :: f(), Y :: f()}) -> ok
7689
7690       windowPos2f(X :: f(), Y :: f()) -> ok
7691
7692       windowPos2fv(X1 :: {X :: f(), Y :: f()}) -> ok
7693
7694       windowPos2i(X :: i(), Y :: i()) -> ok
7695
7696       windowPos2iv(X1 :: {X :: i(), Y :: i()}) -> ok
7697
7698       windowPos2s(X :: i(), Y :: i()) -> ok
7699
7700       windowPos2sv(X1 :: {X :: i(), Y :: i()}) -> ok
7701
7702       windowPos3d(X :: f(), Y :: f(), Z :: f()) -> ok
7703
7704       windowPos3dv(X1 :: {X :: f(), Y :: f(), Z :: f()}) -> ok
7705
7706       windowPos3f(X :: f(), Y :: f(), Z :: f()) -> ok
7707
7708       windowPos3fv(X1 :: {X :: f(), Y :: f(), Z :: f()}) -> ok
7709
7710       windowPos3i(X :: i(), Y :: i(), Z :: i()) -> ok
7711
7712       windowPos3iv(X1 :: {X :: i(), Y :: i(), Z :: i()}) -> ok
7713
7714       windowPos3s(X :: i(), Y :: i(), Z :: i()) -> ok
7715
7716       windowPos3sv(X1 :: {X :: i(), Y :: i(), Z :: i()}) -> ok
7717
7718              The GL maintains a 3D position in window coordinates. This posi‐
7719              tion, called the raster position, is used to position pixel  and
7720              bitmap  write  operations.  It is maintained with subpixel accu‐
7721              racy. See gl:bitmap/7, gl:drawPixels/5, and gl:copyPixels/5.
7722
7723              External documentation.
7724
7725
7726
7727Ericsson AB                         wx 2.1                               gl(3)
Impressum