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