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