查看源码 gl (wx v2.4.3)
OpenGL 的 Erlang 包装函数
标准 OpenGL API
本文档提供了完整 OpenGL 参考页面 的简要版本。
概要
函数
累积缓冲区是一个扩展范围的颜色缓冲区。图像不会渲染到其中。相反,渲染到其中一个颜色缓冲区的图像会在渲染后添加到累积缓冲区的内容中。通过累积使用不同变换矩阵生成的图像,可以创建诸如抗锯齿(点、线和多边形)、运动模糊和景深等效果。
gl:activeShaderProgram/2
将由 Program
命名的链接程序设置为程序管线对象 Pipeline
的活动程序。活动程序管线对象中的活动程序是调用 gl:uniform()
的目标,当没有通过调用 gl:useProgram/1
使任何程序成为当前程序时。
gl:activeTexture/1
选择后续纹理状态调用将影响哪个纹理单元。实现支持的纹理单元数量取决于实现,但必须至少为 80 个。
alpha 测试根据传入片段的 alpha 值与常量参考值之间的比较结果丢弃片段。gl:alphaFunc/2
指定参考值和比较函数。仅当启用 alpha 测试时才执行比较。默认情况下,它未启用。(请参阅 gl:enable/1
和 gl:disable/1
of ?GL_ALPHA_TEST
。)
GL 建立了一个“工作集”的纹理,这些纹理驻留在纹理内存中。这些纹理可以比未驻留的纹理更有效地绑定到纹理目标。
gl:arrayElement/1
命令在 gl:'begin'/1
/gl:'end'/0
对中使用,以指定点、线和多边形图元的顶点和属性数据。如果在调用 gl:arrayElement/1
时启用了 ?GL_VERTEX_ARRAY
,则会绘制一个顶点,使用从启用的数组的位置 I
中获取的顶点和属性数据。如果未启用 ?GL_VERTEX_ARRAY
,则不会发生绘制,但会修改与启用的数组对应的属性。
为了创建完整的着色器程序,必须有一种方法来指定将链接在一起的事物列表。程序对象提供了这种机制。要链接到程序对象中的着色器必须首先附加到该程序对象。gl:attachShader/2
将 Shader
指定的着色器对象附加到 Program
指定的程序对象。这表明 Shader
将包含在将对 Program
执行的链接操作中。
等效于 '\'end\''/0
。
gl:bindAttribLocation/3
用于将 Program
指定的程序对象中的用户定义属性变量与通用顶点属性索引关联。用户定义属性变量的名称作为以空字符结尾的字符串在 Name
中传递。要绑定到此变量的通用顶点属性索引由 Index
指定。当 Program
成为当前状态的一部分时,通过通用顶点属性 Index
提供的值将修改 Name
指定的用户定义属性变量的值。
gl:bindBuffer/2
将缓冲区对象绑定到指定的缓冲区绑定点。调用 gl:bindBuffer/2
,其中 Target
设置为接受的符号常量之一,Buffer
设置为缓冲区对象的名称,将该缓冲区对象名称绑定到目标。如果不存在名称为 Buffer
的缓冲区对象,则会创建一个具有该名称的对象。当缓冲区对象绑定到目标时,该目标的先前绑定会自动中断。
gl:bindBufferBase/3
将缓冲区对象 Buffer
绑定到由 Target
指定的目标数组的索引 Index
处的绑定点。每个 Target
表示缓冲区绑定点的索引数组,以及可由其他缓冲区操作函数(如 gl:bindBuffer/2
或 glMapBuffer
)使用的单个通用绑定点。除了将 Buffer
绑定到索引缓冲区绑定目标之外,gl:bindBufferBase/3
还将 Buffer
绑定到 Target
指定的通用缓冲区绑定点。
gl:bindBufferRange/5
将由 Offset
和 Size
表示的缓冲区对象 Buffer
的范围绑定到由 Target
指定的目标数组的索引 Index
处的绑定点。每个 Target
表示缓冲区绑定点的索引数组,以及可由其他缓冲区操作函数(如 gl:bindBuffer/2
或 glMapBuffer
)使用的单个通用绑定点。除了将 Buffer
的范围绑定到索引缓冲区绑定目标之外,gl:bindBufferRange/5
还将该范围绑定到 Target
指定的通用缓冲区绑定点。
gl:bindBuffersBase/3
将一组 Count
缓冲区对象(其名称在数组 Buffers
中给出)绑定到从由 Target
指定的目标数组的索引 First
开始的 Count
个连续绑定点。如果 Buffers
为 ?NULL
,则 gl:bindBuffersBase/3
会取消绑定当前绑定到引用绑定点的任何缓冲区。假设没有生成错误,它等效于以下伪代码,该伪代码调用 gl:bindBufferBase/3
,但 gl:bindBuffersBase/3
不会更改非索引 Target
。
gl:bindBuffersRange/5
将一组 Count
范围从缓冲区对象(其名称在数组 Buffers
中给出)绑定到从由 Target
指定的目标数组的索引 First
开始的 Count
个连续绑定点。Offsets
指定包含缓冲区中 Count
个起始偏移量的数组的地址,而 Sizes
指定 Count
个范围大小的数组的地址。如果 Buffers
为 ?NULL
,则会忽略 Offsets
和 Sizes
,并且 gl:bindBuffersRange/5
会取消绑定当前绑定到引用绑定点的任何缓冲区。假设没有生成错误,它等效于以下伪代码,该伪代码调用 gl:bindBufferRange/5
,但 gl:bindBuffersRange/5
不会更改非索引 Target
。
gl:bindFragDataLocation/3
显式指定程序 Program
的用户定义可变输出变量 Name
到片段着色器颜色编号 ColorNumber
的绑定。如果之前绑定了 Name
,则其指定的绑定将替换为 ColorNumber
。Name
必须是以空字符结尾的字符串。ColorNumber
必须小于 ?GL_MAX_DRAW_BUFFERS
。
gl:bindFragDataLocationIndexed/4
指定当下次链接程序时,Program
中的可变输出变量 Name
应绑定到片段颜色 ColorNumber
。Index
可以是零或一,以指定颜色分别用作混合方程式的第一个或第二个颜色输入。
gl:bindFramebuffer/2
将名为 Framebuffer
的帧缓冲对象绑定到 Target
指定的帧缓冲目标。Target
必须是 ?GL_DRAW_FRAMEBUFFER
、?GL_READ_FRAMEBUFFER
或 ?GL_FRAMEBUFFER
。如果帧缓冲对象绑定到 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
,它将分别成为渲染或回读操作的目标,直到它被删除或另一个帧缓冲绑定到相应的绑定点。使用设置为 ?GL_FRAMEBUFFER
的 Target
调用 gl:bindFramebuffer/2
会将 Framebuffer
绑定到读取和绘制帧缓冲目标。Framebuffer
是先前调用 gl:genFramebuffers/1
返回的帧缓冲对象的名称,或者为零以断开帧缓冲对象与 Target
的现有绑定。
gl:bindImageTexture/7
将纹理的单个层级绑定到图像单元,以便从着色器中读取和写入它。Unit
指定要将纹理层级绑定到的图像单元的从零开始的索引。Texture
指定要绑定到图像单元的现有纹理对象的名称。如果 Texture
为零,则断开与图像单元的任何现有绑定。Level
指定要绑定到图像单元的纹理的层级。
gl:bindImageTextures/2
将来自现有纹理对象数组的图像绑定到指定数量的连续图像单元。Count
指定存储在数组 Textures
中的纹理对象名称的数量。从数组中读取该数量的纹理名称,并将其绑定到从 First
开始的 Count
个连续纹理单元。如果名称零出现在 Textures
数组中,则重置与图像单元的任何现有绑定。 Textures
中的任何非零条目都必须是现有纹理对象的名称。当 Textures
中存在非零条目时,会绑定零级的图像,绑定被认为是分层的,第一层设置为零,并且图像绑定用于读写访问。图像单元格式参数取自纹理对象零级图像的内部格式。对于立方体贴图纹理,使用零级正 X 图像的内部格式。如果 Textures
为 ?NULL
,则相当于指定了一个仅包含零的适当大小的数组。
gl:bindProgramPipeline/1
将程序管道对象绑定到当前上下文。Pipeline
必须是先前调用 gl:genProgramPipelines/1
返回的名称。如果不存在名为 Pipeline
的程序管道,则会创建一个具有该名称并初始化为默认状态向量的新管道对象。
gl:bindRenderbuffer/2
将名为 Renderbuffer
的渲染缓冲对象绑定到 Target
指定的渲染缓冲目标。Target
必须是 ?GL_RENDERBUFFER
。Renderbuffer
是先前调用 gl:genRenderbuffers/1
返回的渲染缓冲对象的名称,或者为零以断开渲染缓冲对象与 Target
的现有绑定。
gl:bindSampler/2
将 Sampler
绑定到索引为 Unit
的纹理单元。Sampler
必须为零,或者先前调用 gl:genSamplers/1
返回的采样器对象的名称。Unit
必须小于 ?GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
的值。
gl:bindSamplers/2
将来自现有采样器对象数组的采样器绑定到指定数量的连续采样器单元。Count
指定存储在数组 Samplers
中的采样器对象名称的数量。从数组中读取该数量的采样器名称,并将其绑定到从 First
开始的 Count
个连续采样器单元。
gl:bindTexture/2
允许您创建或使用命名纹理。使用设置为 ?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_BUFFER
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
的 Target
以及设置为新纹理名称的 Texture
调用 gl:bindTexture/2
会将纹理名称绑定到目标。当纹理绑定到目标时,该目标之前的绑定会自动断开。
gl:bindTextures/2
将现有纹理对象数组绑定到指定数量的连续纹理单元。Count
指定存储在数组 Textures
中的纹理对象名称的数量。从数组中读取该数量的纹理名称,并将其绑定到从 First
开始的 Count
个连续纹理单元。纹理的目标或类型是从纹理对象推断出来的,每个纹理都绑定到纹理单元的相应目标。如果名称零出现在 Textures
数组中,则重置纹理单元任何目标的任何现有绑定,并且将该目标的默认纹理绑定到位。 Textures
中的任何非零条目都必须是现有纹理对象的名称。如果 Textures
为 ?NULL
,则相当于指定了一个仅包含零的适当大小的数组。
gl:bindTextureUnit/2
将现有纹理对象绑定到编号为 Unit
的纹理单元。
gl:bindTransformFeedback/2
将名为 Id
的变换反馈对象绑定到当前 GL 状态。Id
必须是先前调用 gl:genTransformFeedbacks/1
返回的名称。如果 Id
之前未绑定过,则会创建一个具有名称 Id
并使用默认变换状态向量初始化的新变换反馈对象。
gl:bindVertexArray/1
绑定名为 Array
的顶点数组对象。Array
是先前调用 gl:genVertexArrays/1
返回的顶点数组对象的名称,或者为零以断开现有的顶点数组对象绑定。
位图是二进制图像。绘制时,位图相对于当前光栅位置定位,并且使用当前光栅颜色或索引写入与位图中的 1 对应的帧缓冲区像素。不修改与位图中 0 对应的帧缓冲区像素。
?GL_BLEND_COLOR
可用于计算源和目标混合因子。颜色分量在存储之前被限制在 [0 1] 范围内。有关混合操作的完整描述,请参阅 gl:blendFunc/2
。初始时,?GL_BLEND_COLOR
设置为 (0, 0, 0, 0)。
混合方程确定如何将新像素(“源”颜色)与帧缓冲区中已有的像素(“目标”颜色)组合。此函数将 RGB 混合方程和 alpha 混合方程都设置为单个方程。gl:blendEquationi/2
指定单个绘制缓冲区的混合方程,而 gl:blendEquation/1
设置所有绘制缓冲区的混合方程。
混合方程确定如何将新像素(“源”颜色)与帧缓冲区中已有的像素(“目标”颜色)组合。这些函数为 RGB 颜色分量指定一个混合方程,为 alpha 分量指定一个混合方程。gl:blendEquationSeparatei/3
指定单个绘制缓冲区的混合方程,而 gl:blendEquationSeparate/2
设置所有绘制缓冲区的混合方程。
可以使用将传入(源)RGBA 值与帧缓冲区中已有的 RGBA 值(目标值)混合的函数来绘制像素。混合最初是禁用的。使用参数为 ?GL_BLEND
的 gl:enable/1
和 gl:disable/1
来启用和禁用混合。
可以使用将传入(源)RGBA 值与帧缓冲区中已有的 RGBA 值(目标值)混合的函数来绘制像素。混合最初是禁用的。使用参数为 ?GL_BLEND
的 gl:enable/1
和 gl:disable/1
来启用和禁用混合。
gl:blitFramebuffer/10
和 glBlitNamedFramebuffer
将像素值的矩形区域从读取帧缓冲区的某个区域传输到绘制帧缓冲区的另一个区域。
gl:bufferData/4
和 glNamedBufferData
为缓冲区对象创建一个新的数据存储。 对于 gl:bufferData/4
,将使用当前绑定到 Target
的缓冲区对象。对于 glNamedBufferData
,将使用调用方在 Buffer
中指定的 ID 关联的缓冲区对象。
gl:bufferStorage/4
和 glNamedBufferStorage
创建一个新的不可变数据存储。 对于 gl:bufferStorage/4
,将初始化当前绑定到 Target
的缓冲区对象。 对于 glNamedBufferStorage
,Buffer
是将被配置的缓冲区对象的名称。 数据存储的大小由 Size
指定。 如果有初始数据可用,则可以在 Data
中提供其地址。 否则,要创建未初始化的数据存储,Data
应为 ?NULL
。
gl:bufferSubData/4
和 glNamedBufferSubData
重新定义指定缓冲区对象的部分或全部数据存储。从 Data
指向的内存中,将起始于字节偏移量 Offset
并延伸 Size
字节的数据复制到数据存储中。Offset
和 Size
必须定义一个完全位于缓冲区对象数据存储内的范围。
gl:callList/1
导致执行指定名称的显示列表。 显示列表中保存的命令将按顺序执行,就像它们在没有使用显示列表的情况下被调用一样。 如果 List
没有被定义为显示列表,则 gl:callList/1
将被忽略。
gl:callLists/1
导致执行作为 Lists
传递的名称列表中每个显示列表。 因此,每个显示列表中保存的命令将按顺序执行,就像它们在没有使用显示列表的情况下被调用一样。 未定义的显示列表的名称将被忽略。
gl:checkFramebufferStatus/1
和 glCheckNamedFramebufferStatus
返回帧缓冲区对象作为读取或绘制帧缓冲区时的完整性状态,具体取决于 Target
的值。
gl:clampColor/2
控制在 gl:readPixels/7
期间执行的颜色钳制。Target
必须是 ?GL_CLAMP_READ_COLOR
。如果 Clamp
是 ?GL_TRUE
,则启用读取颜色钳制; 如果 Clamp
是 ?GL_FALSE
,则禁用读取颜色钳制。如果 Clamp
是 ?GL_FIXED_ONLY
,则仅当选定的读取缓冲区具有定点分量时才启用读取颜色钳制,否则禁用。
gl:clear/1
将窗口的位平面区域设置为先前由 gl:clearColor/4
、gl:clearDepth/1
和 gl:clearStencil/1
选择的值。 通过使用 gl:drawBuffer/1
一次选择多个缓冲区,可以同时清除多个颜色缓冲区。
gl:clearAccum/4
指定 gl:clear/1
用于清除累积缓冲区的红色、绿色、蓝色和 alpha 值。
这些命令将帧缓冲区的指定缓冲区清除为指定的值。 对于 gl:clearBuffer*()
,帧缓冲区是当前绑定的绘制帧缓冲区对象。 对于 glClearNamedFramebuffer*
,Framebuffer
为零,表示默认的绘制帧缓冲区,或者是帧缓冲区对象的名称。
gl:clearColor/4
指定 gl:clear/1
用于清除颜色缓冲区的红色、绿色、蓝色和 alpha 值。 由 gl:clearColor/4
指定的值将被钳制到范围 [0 1]。
gl:clearDepth/1
指定 gl:clear/1
用于清除深度缓冲区的深度值。 由 gl:clearDepth/1
指定的值将被钳制到范围 [0 1]。
gl:clearIndex/1
指定 gl:clear/1
用于清除颜色索引缓冲区的索引。 C
不会被钳制。相反,C
被转换为一个具有未指定精度的定点值,精度位于二进制点的右侧。然后,这个值的整数部分将与 2 m-1 进行掩码,其中 m 是帧缓冲区中存储的颜色索引的位数。
gl:clearStencil/1
指定 gl:clear/1
用于清除模板缓冲区的索引。 S
将与 2 m-1 进行掩码,其中 m 是模板缓冲区的位数。
gl:clearTexImage/5
使用应用程序提供的值填充纹理中包含的所有图像。 Texture
必须是现有纹理的名称。 此外,Texture
不能是缓冲区纹理的名称,也不能是其内部格式被压缩的纹理。
gl:clearTexSubImage/11
使用应用程序提供的值填充纹理中包含的图像的全部或部分。 Texture
必须是现有纹理的名称。 此外,Texture
不能是缓冲区纹理的名称,也不能是其内部格式被压缩的纹理。
gl:clientActiveTexture/1
选择要由 gl:texCoordPointer/4
修改的顶点数组客户端状态参数,并在使用 ?GL_TEXTURE_COORD_ARRAY
参数调用时,分别使用 gl:enableClientState/1
或 gl:disableClientState/1
启用或禁用这些参数。
gl:clientWaitSync/3
导致客户端阻塞并等待由 Sync
指定的同步对象变为已发出信号。 如果在调用 gl:clientWaitSync/3
时 Sync
已发出信号,则 gl:clientWaitSync/3
立即返回,否则它将阻塞并等待最多 Timeout
纳秒,直到 Sync
变为已发出信号。
gl:clipControl/2
控制裁剪体行为和裁剪坐标到窗口坐标的转换行为。
几何图形始终根据 x
、y
和 z
中的六个平面视锥的边界进行裁剪。 gl:clipPlane/2
允许指定额外的平面,这些平面不一定垂直于 x
、y
或 z
轴,所有几何图形都将根据这些平面进行裁剪。 要确定其他裁剪平面的最大数量,请使用参数 ?GL_MAX_CLIP_PLANES
调用 gl:getIntegerv/1
。所有实现至少支持六个这样的裁剪平面。由于生成的裁剪区域是定义的半空间的交集,因此它始终是凸的。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
GL 存储当前单值颜色索引和当前四值 RGBA 颜色。 gl:color()
设置新的四值 RGBA 颜色。 gl:color()
有两个主要变体: gl:color3()
和 gl:color4()
。 gl:color3()
变体显式指定新的红色、绿色和蓝色值,并将当前 alpha 值隐式设置为 1.0 (全强度)。 gl:color4()
变体显式指定所有四个颜色分量。
gl:colorMask/4
和 gl:colorMaski/5
指定帧缓冲区中各个颜色分量是否可以写入。 gl:colorMaski/5
为特定的绘制缓冲区设置掩码,而 gl:colorMask/4
为所有绘制缓冲区设置掩码。 例如,如果 Red
为 ?GL_FALSE
,则无论尝试执行什么绘图操作,都不会更改任何颜色缓冲区中任何像素的红色分量。
gl:colorMaterial/2
指定哪些材质参数跟踪当前颜色。 当启用 ?GL_COLOR_MATERIAL
时,由 Mode
指定的材质参数或多个参数,以及由 Face
指定的材质或多个材质,始终跟踪当前颜色。
gl:colorPointer/4
指定渲染时使用的颜色分量数组的位置和数据格式。 Size
指定每个颜色的分量数量,必须为 3 或 4。 Type
指定每个颜色分量的数据类型,Stride
指定从一个颜色到下一个颜色的字节步幅,允许将顶点和属性打包到单个数组或存储在单独的数组中。(在某些实现中,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
gl:colorSubTable/6
用于重新指定先前使用 gl:colorTable/6
定义的颜色表的连续部分。 由 Data
引用的像素将替换现有表中从索引 Start
到 start+count-1(包括)的部分。 此区域不得包含最初指定颜色表范围之外的任何条目。 指定宽度为 0 的子纹理不是错误,但这样的指定无效。
gl:colorTable/6
可以通过两种方式使用:测试给定一组参数的查找表的实际大小和颜色分辨率,或者加载颜色查找表的内容。 对于第一种情况,使用目标 ?GL_PROXY_*
,对于第二种情况,使用其他目标。
gl:colorTableParameter()
用于指定将颜色分量加载到颜色表时应用的比例因子和偏差项。 Target
指示比例和偏差项应用于哪个颜色表;它必须设置为 ?GL_COLOR_TABLE
、?GL_POST_CONVOLUTION_COLOR_TABLE
或 ?GL_POST_COLOR_MATRIX_COLOR_TABLE
。
gl:compileShader/1
编译存储在由 Shader
指定的着色器对象中的源代码字符串。
纹理允许着色器读取图像数组的元素。
纹理允许着色器读取图像数组的元素。
纹理允许着色器读取图像数组的元素。
纹理允许着色器读取图像数组的元素。
纹理允许着色器读取图像数组的元素。
纹理允许着色器读取图像数组的元素。
gl:convolutionFilter1D/6
从像素数组构建一维卷积滤波内核。
gl:convolutionFilter2D/7
从像素数组构建二维卷积滤波内核。
gl:copyBufferSubData/5
和 glCopyNamedBufferSubData
将附加到源缓冲区对象的数据存储的一部分复制到附加到目标缓冲区对象的数据存储。 由 Size
指示的基本机器单元数量从源的偏移量 ReadOffset
复制到目标的偏移量 WriteOffset
。 ReadOffset
、WriteOffset
和 Size
以基本机器单元为单位。
gl:copyColorSubTable/5
用于重新指定先前使用 gl:colorTable/6
定义的颜色表的连续部分。 从帧缓冲区复制的像素将替换现有表中从索引 Start
到 start+x-1(包括)的部分。 此区域不得包含最初指定颜色表范围之外的任何条目。 指定宽度为 0 的子纹理不是错误,但这样的指定无效。
gl:copyColorTable/5
从当前的 ?GL_READ_BUFFER
加载颜色表(而不是像 gl:colorTable/6
那样从主内存加载)。
gl:copyConvolutionFilter1D/5
使用来自当前 ?GL_READ_BUFFER
的像素定义一维卷积滤波内核(而不是像 gl:convolutionFilter1D/6
那样从主内存定义)。
gl:copyConvolutionFilter2D/6
使用来自当前 ?GL_READ_BUFFER
的像素定义二维卷积滤波内核(而不是像 gl:convolutionFilter2D/7
那样从主内存定义)。
gl:copyImageSubData/15
可用于将数据从一个图像(即纹理或渲染缓冲区)复制到另一个图像。 gl:copyImageSubData/15
不执行通用转换,例如缩放、调整大小、混合、色彩空间或格式转换。 应将其视为以类似于 CPU memcpy 的方式运行。 CopyImageSubData 可以在具有不同内部格式的图像之间复制,前提是格式兼容。
gl:copyPixels/5
将与屏幕对齐的像素矩形从指定的帧缓冲区位置复制到相对于当前光栅位置的区域。 只有当整个像素源区域都在窗口的暴露部分内时,其操作才是明确定义的。 从窗口外部或从窗口中未暴露的区域复制的结果取决于硬件并且是未定义的。
gl:copyTexImage1D/7
使用来自当前 ?GL_READ_BUFFER
的像素定义一维纹理图像。
gl:copyTexImage2D/8
使用来自当前 ?GL_READ_BUFFER
的像素定义二维纹理图像或立方体贴图纹理图像。
gl:copyTexSubImage1D/6
和 glCopyTextureSubImage1D
使用来自当前 ?GL_READ_BUFFER
的像素替换一维纹理图像的一部分(而不是像 gl:texSubImage1D/7
那样从主内存替换)。 对于 gl:copyTexSubImage1D/6
,将使用绑定到 Target
的纹理对象进行处理。 对于 glCopyTextureSubImage1D
,Texture
指示应将哪个纹理对象用于调用目的。
gl:copyTexSubImage2D/8
和 glCopyTextureSubImage2D
使用来自当前 ?GL_READ_BUFFER
的像素替换二维纹理图像、立方体贴图纹理图像、矩形图像的矩形部分,或一维数组纹理的多个切片的线性部分(而不是像 gl:texSubImage2D/9
那样从主内存替换)。
gl:copyTexSubImage3D/9
和 glCopyTextureSubImage3D
函数使用来自当前 ?GL_READ_BUFFER
的像素替换三维或二维数组纹理图像的矩形部分(而不是像 gl:texSubImage3D/11
那样从主内存替换)。
gl:createBuffers/1
在 Buffers
中返回 N
个先前未使用的缓冲区名称,每个名称代表一个新的缓冲区对象,该对象初始化时就好像它已绑定到未指定的目标一样。
gl:createFramebuffers/1
在 Framebuffers
中返回 N
个先前未使用的帧缓冲区名称,每个名称代表一个初始化为默认状态的新帧缓冲区对象。
gl:createProgram/0
创建一个空的程序对象,并返回一个非零值,可以通过该值引用该对象。 程序对象是一个可以附加着色器对象的对象。 这提供了一种机制来指定将链接以创建程序的着色器对象。 它还提供了一种方法来检查将用于创建程序的着色器的兼容性(例如,检查顶点着色器和片段着色器之间的兼容性)。 当不再需要作为程序对象的一部分时,可以分离着色器对象。
gl:createProgramPipelines/1
在 Pipelines
中返回 N
个先前未使用的程序管道名称,每个名称代表一个初始化为默认状态的新程序管道对象。
gl:createQueries/2
在 Ids
中返回 N
个先前未使用的查询对象名称,每个名称代表一个具有指定 Target
的新查询对象。
gl:createRenderbuffers/1
在 Renderbuffers
中返回 N
个先前未使用的渲染缓冲区对象名称,每个名称代表一个初始化为默认状态的新渲染缓冲区对象。
gl:createSamplers/1
在 Samplers
中返回 N
个先前未使用的采样器名称,每个名称代表一个初始化为默认状态的新采样器对象。
gl:createShader/1
创建一个空的着色器对象,并返回一个非零值,通过该值可以引用它。着色器对象用于维护定义着色器的源代码字符串。ShaderType
指示要创建的着色器的类型。支持五种类型的着色器。类型为 ?GL_COMPUTE_SHADER
的着色器是打算在可编程计算处理器上运行的着色器。类型为 ?GL_VERTEX_SHADER
的着色器是打算在可编程顶点处理器上运行的着色器。类型为 ?GL_TESS_CONTROL_SHADER
的着色器是打算在控制阶段在可编程细分处理器上运行的着色器。类型为 ?GL_TESS_EVALUATION_SHADER
的着色器是打算在评估阶段在可编程细分处理器上运行的着色器。类型为 ?GL_GEOMETRY_SHADER
的着色器是打算在可编程几何处理器上运行的着色器。类型为 ?GL_FRAGMENT_SHADER
的着色器是打算在可编程片段处理器上运行的着色器。
gl:createShaderProgram()
创建一个程序对象,其中包含由 Type
指定的单个阶段的已编译和链接的着色器。Strings
指的是用于创建着色器可执行文件的 Count
个字符串的数组。
gl:createTextures/2
返回 Textures
中先前未使用的 N
个纹理名称,每个名称代表一个由 Target
指定维度和类型的新纹理对象,并初始化为该纹理类型的默认值。
gl:createTransformFeedbacks/1
返回 Ids
中先前未使用的 N
个变换反馈对象名称,每个名称代表一个初始化为默认状态的新变换反馈对象。
gl:createVertexArrays/1
返回 Arrays
中先前未使用的 N
个顶点数组对象名称,每个名称代表一个初始化为默认状态的新顶点数组对象。
gl:cullFace/1
指定当启用面剔除时,是剔除正面还是背面(由 mode
指定)。面剔除最初是禁用的。要启用和禁用面剔除,请使用参数 ?GL_CULL_FACE
调用 gl:enable/1
和 gl:disable/1
命令。面包括三角形、四边形、多边形和矩形。
gl:debugMessageControl/5
控制调试上下文生成的调试消息的报告。Source
、Type
和 Severity
参数形成一个过滤器,用于从 GL 生成的潜在消息池中选择消息。
gl:debugMessageInsert/5
将用户提供的消息插入调试输出队列。Source
指定用于对消息进行分类的源,并且必须是 ?GL_DEBUG_SOURCE_APPLICATION
或 ?GL_DEBUG_SOURCE_THIRD_PARTY
。所有其他源都保留供 GL 实现使用。Type
指示要插入的消息的类型,并且可以是 ?GL_DEBUG_TYPE_ERROR
、?GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
、?GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
、?GL_DEBUG_TYPE_PORTABILITY
、?GL_DEBUG_TYPE_PERFORMANCE
、?GL_DEBUG_TYPE_MARKER
、?GL_DEBUG_TYPE_PUSH_GROUP
、?GL_DEBUG_TYPE_POP_GROUP
或 ?GL_DEBUG_TYPE_OTHER
之一。Severity
指示消息的严重性,并且可以是 ?GL_DEBUG_SEVERITY_LOW
、?GL_DEBUG_SEVERITY_MEDIUM
、?GL_DEBUG_SEVERITY_HIGH
或 ?GL_DEBUG_SEVERITY_NOTIFICATION
。Id
可用于应用程序定义的用途,并且可以是任何值。此值将被记录并用于标识消息。
gl:deleteBuffers/1
删除由数组 Buffers
的元素命名的 N
个缓冲区对象。删除缓冲区对象后,它没有内容,并且其名称可以重复使用(例如,通过 gl:genBuffers/1
)。如果删除了当前绑定的缓冲区对象,则绑定将恢复为 0(没有任何缓冲区对象)。
gl:deleteFramebuffers/1
删除其名称存储在 Framebuffers
寻址的数组中的 N
个帧缓冲区对象。名称零由 GL 保留,如果它出现在 Framebuffers
中,则会被静默忽略,其他未使用的名称也是如此。一旦帧缓冲区对象被删除,其名称再次未被使用,并且它没有附件。如果当前绑定到一个或多个目标 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
的帧缓冲区被删除,则如同执行了 gl:bindFramebuffer/2
,并且相应的 Target
和 Framebuffer
为零。
gl:deleteLists/2
导致删除连续的一组显示列表。List
是要删除的第一个显示列表的名称,Range
是要删除的显示列表的数量。所有显示列表 d 且 list<= d<= list+range-1 都被删除。
gl:deleteProgram/1
释放内存并使 Program
指定的程序对象相关联的名称无效。此命令有效地撤消了对 gl:createProgram/0
的调用效果。
gl:deleteProgramPipelines/1
删除其名称存储在数组 Pipelines
中的 N
个程序管道对象。Pipelines
中未使用的名称将被忽略,名称零也是如此。删除程序管道对象后,其名称再次未被使用,并且它没有内容。如果删除了当前绑定的程序管道对象,则该对象的绑定将恢复为零,并且没有程序管道对象变为当前对象。
gl:deleteQueries/1
删除由数组 Ids
的元素命名的 N
个查询对象。删除查询对象后,它没有内容,并且其名称可以重复使用(例如,通过 gl:genQueries/1
)。
gl:deleteRenderbuffers/1
删除其名称存储在 Renderbuffers
寻址的数组中的 N
个渲染缓冲区对象。名称零由 GL 保留,如果它出现在 Renderbuffers
中,则会被静默忽略,其他未使用的名称也是如此。一旦渲染缓冲区对象被删除,其名称再次未被使用,并且它没有内容。如果当前绑定到目标 ?GL_RENDERBUFFER
的渲染缓冲区被删除,则如同执行了 gl:bindRenderbuffer/2
,并且 Target
为 ?GL_RENDERBUFFER
,而 Name
为零。
gl:deleteSamplers/1
删除由数组 Samplers
的元素命名的 N
个采样器对象。删除采样器对象后,其名称再次未被使用。如果当前绑定到采样器单元的采样器对象被删除,则如同调用 gl:bindSampler/2
,其中 unit 设置为采样器绑定的单元,而 sampler 为零。 samplers 中未使用的名称会被静默忽略,保留名称零也是如此。
gl:deleteShader/1
释放内存并使 Shader
指定的着色器对象相关联的名称无效。此命令有效地撤消了对 gl:createShader/1
的调用效果。
gl:deleteSync/1
删除由 Sync
指定的同步对象。如果与指定的同步对象对应的栅栏命令已完成,或者如果没有 gl:waitSync/3
或 gl:clientWaitSync/3
命令阻止 Sync
,则立即删除该对象。否则,将标记 Sync
以进行删除,并且当它不再与任何栅栏命令关联并且不再阻止任何 gl:waitSync/3
或 gl:clientWaitSync/3
命令时,它将被删除。在任何一种情况下,在 gl:deleteSync/1
返回之后,名称 Sync
无效,并且不能再用于引用同步对象。
gl:deleteTextures/1
删除由数组 Textures
的元素命名的 N
个纹理。删除纹理后,它没有内容或维度,并且其名称可以重复使用(例如,通过 gl:genTextures/1
)。如果删除了当前绑定的纹理,则绑定将恢复为 0(默认纹理)。
gl:deleteTransformFeedbacks/1
删除其名称存储在数组 Ids
中的 N
个变换反馈对象。Ids
中未使用的名称将被忽略,名称零也是如此。删除变换反馈对象后,其名称再次未被使用,并且它没有内容。如果删除了活动变换反馈对象,则其名称立即变为未被使用,但只有在不再活动时才删除基础对象。
gl:deleteVertexArrays/1
删除 Arrays
指向的数组中存储的 N
个顶点数组对象。一旦顶点数组对象被删除,它将不再包含任何内容,其名称再次变为未使用状态。如果当前绑定的顶点数组对象被删除,则该对象的绑定将恢复为零,默认的顶点数组将变为当前。 Arrays
中未使用的名称会被静默忽略,零值也会被忽略。
gl:depthFunc/1
指定用于将每个传入的像素深度值与深度缓冲区中存在的深度值进行比较的函数。只有在启用深度测试时才会执行比较。(请参阅 gl:enable/1
和 gl:disable/1
中的 ?GL_DEPTH_TEST
。)
gl:depthMask/1
指定是否启用深度缓冲区的写入。如果 Flag
为 ?GL_FALSE
,则禁用深度缓冲区写入。否则,启用深度缓冲区写入。初始情况下,深度缓冲区写入是启用的。
在裁剪并除以 w
后,深度坐标的范围为 -1 到 1,对应于近裁剪平面和远裁剪平面。每个视口都有一个独立的深度范围,该范围指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。无论实际的深度缓冲区实现如何,窗口坐标深度值都被视为范围从 0 到 1(如颜色分量)。gl:depthRangeArray()
为范围 [First
, First
+ Count
) 中的每个视口指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。因此,gl:depthRangeArray()
接受的值在被接受之前都会被钳制到这个范围内。
在裁剪并除以 w
后,深度坐标的范围为 -1 到 1,对应于近裁剪平面和远裁剪平面。gl:depthRange/2
指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。无论实际的深度缓冲区实现如何,窗口坐标深度值都被视为范围从 0 到 1(如颜色分量)。因此,gl:depthRange/2
接受的值在被接受之前都会被钳制到这个范围内。
在裁剪并除以 w
后,深度坐标的范围为 -1 到 1,对应于近裁剪平面和远裁剪平面。每个视口都有一个独立的深度范围,该范围指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。无论实际的深度缓冲区实现如何,窗口坐标深度值都被视为范围从 0 到 1(如颜色分量)。gl:depthRangeIndexed/3
为指定的视口指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。因此,gl:depthRangeIndexed/3
接受的值在被接受之前都会被钳制到这个范围内。
gl:detachShader/2
从 Program
指定的程序对象中分离 Shader
指定的着色器对象。此命令可用于撤销命令 gl:attachShader/2
的效果。
等同于 enablei/2
。
gl:dispatchCompute/3
启动一个或多个计算工作组。每个工作组都由计算着色器阶段的活动程序对象处理。虽然工作组内的各个着色器调用作为一个单元执行,但工作组是完全独立且以未指定的顺序执行的。Num_groups_x
、Num_groups_y
和 Num_groups_z
分别指定在 X、Y 和 Z 维度中将要调度的本地工作组的数量。
gl:dispatchComputeIndirect/1
使用当前绑定到 ?GL_DISPATCH_INDIRECT_BUFFER
目标的缓冲区对象中存储的参数启动一个或多个计算工作组。每个工作组都由计算着色器阶段的活动程序对象处理。虽然工作组内的各个着色器调用作为一个单元执行,但工作组是完全独立且以未指定的顺序执行的。Indirect
包含存储参数的绑定到 ?GL_DISPATCH_INDIRECT_BUFFER
目标的缓冲区对象的数据存储的偏移量。
gl:drawArrays/3
使用很少的子程序调用来指定多个几何图元。您可以预先指定顶点、法线和颜色的单独数组,而不是调用 GL 程序来传递每个单独的顶点、法线、纹理坐标、边缘标志或颜色,并使用它们通过单次调用 gl:drawArrays/3
来构造一系列图元。
gl:drawArraysIndirect/2
使用很少的子程序调用来指定多个几何图元。gl:drawArraysIndirect/2
的行为类似于 gl:drawArraysInstancedBaseInstance/5
,只是 gl:drawArraysInstancedBaseInstance/5
的参数存储在 Indirect
给出的地址的内存中。
gl:drawArraysInstanced/4
的行为与 gl:drawArrays/3
完全相同,只是执行 Instancecount
次元素范围,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
gl:drawArraysInstancedBaseInstance/5
的行为与 gl:drawArrays/3
完全相同,只是执行 Instancecount
次元素范围,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
当颜色被写入帧缓冲区时,它们被写入由 gl:drawBuffer/1
指定的颜色缓冲区。以下值之一可用于默认帧缓冲区
gl:drawBuffers/1
和 glNamedFramebufferDrawBuffers
定义了一个缓冲区数组,片段着色器数据的输出将写入其中。如果片段着色器将值写入一个或多个用户定义的输出变量,则每个变量的值将被写入 Bufs
中与分配给该用户定义的输出的位置相对应的位置指定的缓冲区。用于分配给大于或等于 N
的位置的用户定义输出的绘制缓冲区将隐式设置为 ?GL_NONE
,并且写入此类输出的任何数据都将被丢弃。
gl:drawElements/4
使用很少的子程序调用来指定多个几何图元。您可以预先指定顶点、法线等单独的数组,而不是调用 GL 函数来传递每个单独的顶点、法线、纹理坐标、边缘标志或颜色,并使用它们通过单次调用 gl:drawElements/4
来构造一系列图元。
gl:drawElementsBaseVertex/5
的行为与 gl:drawElements/4
完全相同,只是相应绘制调用传递的第 i
个元素将从每个启用数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
可表示的最大值,则就像将计算转换为 32 位无符号整数一样(在溢出条件下进行包装)。如果总和为负数,则操作未定义。
gl:drawElementsIndirect/3
使用很少的子程序调用来指定多个索引几何图元。gl:drawElementsIndirect/3
的行为类似于 gl:drawElementsInstancedBaseVertexBaseInstance/7
,只是 gl:drawElementsInstancedBaseVertexBaseInstance/7
的参数存储在 Indirect
给出的地址的内存中。
gl:drawElementsInstanced/5
的行为与 gl:drawElements/4
完全相同,只是执行 Instancecount
次元素集,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
gl:drawElementsInstancedBaseInstance/6
的行为与 gl:drawElements/4
完全相同,只是执行 Instancecount
次元素集,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
gl:drawElementsInstancedBaseVertex/6
的行为与 gl:drawElementsInstanced/5
完全相同,只是相应绘制调用传递的第 i
个元素将从每个启用数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
可表示的最大值,则就像将计算转换为 32 位无符号整数一样(在溢出条件下进行包装)。如果总和为负数,则操作未定义。
gl:drawElementsInstancedBaseVertexBaseInstance/7
的行为与 gl:drawElementsInstanced/5
完全相同,只是相应绘制调用传递的第 i
个元素将从每个启用数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
可表示的最大值,则就像将计算转换为 32 位无符号整数一样(在溢出条件下进行包装)。如果总和为负数,则操作未定义。
gl:drawPixels/5
从内存中读取像素数据,并将其写入帧缓冲区,写入位置相对于当前光栅位置,前提是该光栅位置有效。使用 gl:rasterPos()
或 gl:windowPos()
设置当前光栅位置;使用 gl:get()
以及参数 ?GL_CURRENT_RASTER_POSITION_VALID
来确定指定的光栅位置是否有效,使用 gl:get()
以及参数 ?GL_CURRENT_RASTER_POSITION
来查询光栅位置。
gl:drawRangeElements/6
是 gl:drawElements/4
的受限形式。Mode
和 Count
与 gl:drawElements/4
的对应参数匹配,并附加限制,即数组 Count
中的所有值都必须介于 Start
和 End
之间(包括 Start
和 End
)。
gl:drawRangeElementsBaseVertex/7
是 gl:drawElementsBaseVertex/5
的受限形式。Mode
、Count
和 Basevertex
与 gl:drawElementsBaseVertex/5
的对应参数匹配,并附加限制,即数组 Indices
中的所有值在添加 Basevertex
之前都必须介于 Start
和 End
之间(包括 Start
和 End
)。位于范围 [Start
, End
] 之外的索引值的处理方式与 gl:drawElementsBaseVertex/5
相同。对应的绘制调用传输的第 i
个元素将从每个启用的数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
所能表示的最大值,则如同将计算结果转换为 32 位无符号整数(在溢出条件下进行环绕)。如果总和为负数,则操作未定义。
gl:drawTransformFeedback/2
使用从 Id
指定的变换反馈中检索的计数,绘制由 Mode
指定的类型的图元。调用 gl:drawTransformFeedback/2
等同于调用 gl:drawArrays/3
,其中 Mode
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流零上捕获的顶点数。
gl:drawTransformFeedbackInstanced/3
使用从 Id
指定的变换反馈对象的 Stream
指定的变换反馈流中检索的计数,绘制多个由 Mode
指定的类型的图元副本。调用 gl:drawTransformFeedbackInstanced/3
等同于调用 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流零上捕获的顶点数。
gl:drawTransformFeedbackStream/3
使用从 Id
指定的变换反馈对象的 Stream
指定的变换反馈流中检索的计数,绘制由 Mode
指定的类型的图元。调用 gl:drawTransformFeedbackStream/3
等同于调用 gl:drawArrays/3
,其中 Mode
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流 Stream
上捕获的顶点数。
gl:drawTransformFeedbackStreamInstanced/4
使用从 Id
指定的变换反馈对象的 Stream
指定的变换反馈流中检索的计数,绘制多个由 Mode
指定的类型的图元副本。调用 gl:drawTransformFeedbackStreamInstanced/4
等同于调用 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流 Stream
上捕获的顶点数。
gl:edgeFlagPointer/2
指定渲染时使用的布尔边标志数组的位置和数据格式。Stride
指定从一个边标志到下一个边标志的字节步幅,允许将顶点和属性打包到单个数组中或存储在单独的数组中。
在 gl:'begin'/1
/gl:'end'/0
对之间指定的每个多边形、独立三角形或独立四边形的顶点都被标记为边界边或非边界边的起点。如果在指定顶点时当前边标志为真,则该顶点被标记为边界边的起点。否则,该顶点被标记为非边界边的起点。gl:edgeFlag/1
如果 Flag
为 ?GL_TRUE
,则将边标志位设置为 ?GL_TRUE
,否则设置为 ?GL_FALSE
。
等同于 enablei/2
。
gl:enableClientState/1
和 gl:disableClientState/1
启用或禁用单个客户端功能。默认情况下,所有客户端功能都处于禁用状态。gl:enableClientState/1
和 gl:disableClientState/1
都接受单个参数 Cap
,它可以采用以下值之一
gl:enable/1
和 gl:disable/1
启用和禁用各种功能。使用 gl:isEnabled/1
或 gl:get()
确定任何功能的当前设置。除了 ?GL_DITHER
和 ?GL_MULTISAMPLE
之外,每个功能的初始值均为 ?GL_FALSE
。?GL_DITHER
和 ?GL_MULTISAMPLE
的初始值为 ?GL_TRUE
。
gl:enableVertexAttribArray/1
和 gl:enableVertexArrayAttrib/2
启用由 Index
指定的通用顶点属性数组。gl:enableVertexAttribArray/1
使用当前绑定的顶点数组对象进行操作,而 gl:enableVertexArrayAttrib/2
更新 ID 为 Vaobj
的顶点数组对象的状态。
gl:'begin'/1
和 gl:'end'/0
界定定义图元或一组类似图元的顶点。gl:'begin'/1
接受一个参数,用于指定以十种方式中的哪一种方式解释顶点。将 n 作为从 1 开始的整数计数,N 作为指定的顶点总数,解释如下
条件渲染使用 gl:beginConditionalRender/2
启动,并使用 gl:endConditionalRender/0
结束。在条件渲染期间,如果查询对象 Id
的 (?GL_SAMPLES_PASSED
) 结果为零,或者 (?GL_ANY_SAMPLES_PASSED
) 结果为 ?GL_FALSE
,则所有顶点数组命令,以及 gl:clear/1
和 gl:clearBuffer()
均无效。设置当前顶点状态的命令(如 gl:vertexAttrib()
)的结果未定义。如果 (?GL_SAMPLES_PASSED
) 结果为非零,或者 (?GL_ANY_SAMPLES_PASSED
) 结果为 ?GL_TRUE
,则不会丢弃此类命令。gl:beginConditionalRender/2
的 Id
参数必须是从之前调用 gl:genQueries/1
返回的查询对象的名称。Mode
指定如何解释查询对象的结果。如果 Mode
为 ?GL_QUERY_WAIT
,则 GL 会等待查询结果可用,然后使用结果来确定是否丢弃后续的渲染命令。如果 Mode
为 ?GL_QUERY_NO_WAIT
,则 GL 可以选择无条件执行后续渲染命令,而无需等待查询完成。
gl:beginQuery/2
和 gl:endQuery/1
划定了查询对象的边界。Query
必须是先前调用 gl:genQueries/1
返回的名称。如果名为 Id
的查询对象尚不存在,则会根据 Target
确定的类型创建它。Target
必须是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
之一。查询对象的行为取决于其类型,如下所示。
gl:beginQueryIndexed/3
和 gl:endQueryIndexed/2
划定了查询对象的边界。Query
必须是先前调用 gl:genQueries/1
返回的名称。如果名为 Id
的查询对象尚不存在,则会根据 Target
确定的类型创建它。Target
必须是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
之一。查询对象的行为取决于其类型,如下所示。
变换反馈模式捕获顶点着色器(如果激活,则捕获几何着色器)写入的可变变量的值。变换反馈在调用 gl:beginTransformFeedback/1
之后被认为是激活状态,直到随后调用 gl:endTransformFeedback/0
为止。变换反馈命令必须成对出现。
gl:evalCoord1()
在参数 U
处评估启用的一维映射。gl:evalCoord2()
对二维映射执行相同的操作,使用两个域值 U
和 V
。要定义映射,请调用 glMap1
和 glMap2
;要启用和禁用它,请调用 gl:enable/1
和 gl:disable/1
。
gl:mapGrid()
和 gl:evalMesh()
配合使用,以高效地生成和评估一系列均匀间隔的映射域值。gl:evalMesh()
逐步遍历一维或二维网格的整数域,其范围是由 glMap1
和 glMap2
指定的评估映射的域。Mode
确定结果顶点是连接为点、线还是填充多边形。
gl:mapGrid()
和 gl:evalMesh()
配合使用,以高效地生成和评估一系列均匀间隔的映射域值。gl:evalPoint()
可用于评估与 gl:evalMesh()
遍历的相同网格空间中的单个网格点。调用 gl:evalPoint1/1
等效于调用 glEvalCoord1( i.ð u+u 1 ); 其中 ð u=(u 2-u 1)/n
gl:feedbackBuffer/3
函数控制反馈。与选择一样,反馈也是一种 GL 模式。通过使用 ?GL_FEEDBACK
调用 gl:renderMode/1
来选择该模式。当 GL 处于反馈模式时,光栅化不会生成任何像素。相反,有关本来会被光栅化的图元的信息会使用 GL 反馈给应用程序。
gl:fenceSync/2
创建一个新的栅栏同步对象,将栅栏命令插入到 GL 命令流中,并将其与该同步对象关联,并返回与该同步对象对应的非零名称。
gl:finish/0
在所有先前调用的 GL 命令的效果完成之前不会返回。这些效果包括对 GL 状态的所有更改、对连接状态的所有更改以及对帧缓冲区内容的所有更改。
不同的 GL 实现将命令缓冲在多个不同的位置,包括网络缓冲区和图形加速器本身。gl:flush/0
清空所有这些缓冲区,使所有发出的命令在被实际渲染引擎接受后尽快执行。尽管此执行可能不会在任何特定时间段内完成,但它会在有限的时间内完成。
gl:flushMappedBufferRange/3
指示已对映射缓冲区对象的范围进行了修改。缓冲区对象必须先前已使用 ?GL_MAP_FLUSH_EXPLICIT_BIT
标志进行映射。
等效于 fogCoordfv/1
。
gl:fogCoord()
指定与每个顶点和当前光栅位置关联的雾坐标。指定的值将被插值并用于计算雾颜色(请参见 gl:fog()
)。
gl:fogCoordPointer/3
指定渲染时要使用的雾坐标数组的位置和数据格式。Type
指定每个雾坐标的数据类型,Stride
指定从一个雾坐标到下一个雾坐标的字节跨度,允许将顶点和属性打包到单个数组中或存储在单独的数组中。
雾最初处于禁用状态。启用后,雾会影响光栅化的几何图形、位图和像素块,但不影响缓冲区清除操作。要启用和禁用雾,请使用参数 ?GL_FOG
调用 gl:enable/1
和 gl:disable/1
。
gl:framebufferParameteri/3
和 glNamedFramebufferParameteri
修改指定帧缓冲区对象中名为 Pname
的参数的值。默认绘制和读取帧缓冲区没有可修改的参数,因此它们不是这些命令的有效目标。
gl:framebufferRenderbuffer/4
和 glNamedFramebufferRenderbuffer
将渲染缓冲区作为指定帧缓冲区对象的逻辑缓冲区之一进行附加。渲染缓冲区无法附加到默认绘制和读取帧缓冲区,因此它们不是这些命令的有效目标。
这些命令将选定的 mipmap 级别或纹理对象的图像作为指定帧缓冲区对象的逻辑缓冲区之一进行附加。纹理无法附加到默认绘制和读取帧缓冲区,因此它们不是这些命令的有效目标。
在完全由不透明闭合表面组成的场景中,背面多边形永远不可见。消除这些不可见的多边形具有加速图像渲染的明显好处。要启用和禁用消除背面多边形,请使用参数 ?GL_CULL_FACE
调用 gl:enable/1
和 gl:disable/1
。
gl:frustum/6
描述一个产生透视投影的透视矩阵。当前矩阵(请参见 gl:matrixMode/1
)乘以该矩阵,结果将替换当前矩阵,就像调用 gl:multMatrix()
并将以下矩阵作为其参数一样
gl:genBuffers/1
在 Buffers
中返回 N
个缓冲区对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genBuffers/1
之前,返回的名称均未使用。
gl:generateMipmap/1
和 gl:generateTextureMipmap/1
为指定的纹理对象生成 mipmap。对于 gl:generateMipmap/1
,纹理对象绑定到 Target
。对于 gl:generateTextureMipmap/1
,Texture
是纹理对象的名称。
gl:genFramebuffers/1
在 Ids
中返回 N
个帧缓冲区对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genFramebuffers/1
之前,返回的名称均未使用。
gl:genLists/1
有一个参数 Range
。它返回一个整数 n
,使得创建了 Range
个连续的空显示列表,命名为 n、n+1、...、n+range-1。如果 Range
为 0,如果不存在 Range
个连续的可用名称的组,或者如果生成任何错误,则不会生成显示列表,并且返回 0。
gl:genProgramPipelines/1
在 Pipelines
中返回 N
个先前未使用的程序管道对象名称。这些名称被标记为已使用,仅用于 gl:genProgramPipelines/1
,但只有在首次绑定时才会获取程序管道状态。
gl:genQueries/1
在 Ids
中返回 N
个查询对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genQueries/1
之前,返回的名称均未使用。
gl:genRenderbuffers/1
在 Renderbuffers
中返回 N
个渲染缓冲区对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genRenderbuffers/1
之前,返回的名称均未使用。
gl:genSamplers/1
在 Samplers
中返回 N
个采样器对象名称。不能保证这些名称形成一个连续的整数集合;但是,可以保证在调用 gl:genSamplers/1
之前,返回的名称都没有被使用。
gl:genTextures/1
在 Textures
中返回 N
个纹理名称。不能保证这些名称形成一个连续的整数集合;但是,可以保证在调用 gl:genTextures/1
之前,返回的名称都没有被使用。
gl:genTransformFeedbacks/1
在 Ids
中返回 N
个先前未使用的变换反馈对象名称。这些名称被标记为已使用,仅用于 gl:genTransformFeedbacks/1
,但它们仅在首次绑定时才获得变换反馈状态。
gl:genVertexArrays/1
在 Arrays
中返回 N
个顶点数组对象名称。不能保证这些名称形成一个连续的整数集合;但是,可以保证在调用 gl:genVertexArrays/1
之前,返回的名称都没有被使用。
gl:getActiveAttrib/3
返回由 Program
指定的程序对象中活动属性变量的信息。可以通过使用值 ?GL_ACTIVE_ATTRIBUTES
调用 gl:getProgram()
来获取活动属性的数量。 Index
的值为 0 选择第一个活动属性变量。 Index
的允许值范围从 0 到活动属性变量的数量减 1。
gl:getActiveSubroutineName/4
查询在 Program
中给出的程序对象中的活动着色器子例程统一变量的名称。Index
指定由 Stage
给出的着色器阶段内的着色器子例程统一变量的索引,并且必须介于零和着色器阶段的 ?GL_ACTIVE_SUBROUTINES
的值减 1 之间。
gl:getActiveSubroutineUniformName/4
检索活动着色器子例程统一变量的名称。Program
包含包含统一变量的程序的名称。Shadertype
指定统一变量位置有效的阶段,由 Index
给出。Index
必须介于零和着色器阶段的 ?GL_ACTIVE_SUBROUTINE_UNIFORMS
的值减 1 之间。
gl:getActiveUniform/3
返回由 Program
指定的程序对象中活动统一变量的信息。可以通过使用值 ?GL_ACTIVE_UNIFORMS
调用 gl:getProgram()
来获取活动统一变量的数量。 Index
的值为 0 选择第一个活动统一变量。Index
的允许值范围从 0 到活动统一变量的数量减 1。
gl:getActiveUniformBlockiv/4
检索有关 Program
中活动统一变量块的信息。
gl:getActiveUniformBlockName/3
检索 Program
内 UniformBlockIndex
处的活动统一变量块的名称。
gl:getActiveUniformName/3
返回 Program
内 UniformIndex
处的活动统一变量的名称。如果 UniformName
不为 NULL,则最多将 BufSize
个字符(包括一个空终止符)写入地址由 UniformName
指定的数组中。如果 Length
不为 NULL,则写入 UniformName
的字符数(不包括空终止符)将放置在地址在 Length
中指定的变量中。如果 Length
为 NULL,则不返回长度。Program
中最长统一变量名称的长度由 ?GL_ACTIVE_UNIFORM_MAX_LENGTH
的值给出,可以使用 gl:getProgram()
进行查询。
gl:getActiveUniformsiv/3
查询在 Program
中,其索引在 UniformIndices
的 UniformCount
无符号整数数组中指定的每个统一变量的名为 Pname
的参数的值。成功后,每个统一变量的参数值将写入地址在 Params
中给出的数组中的相应条目。如果生成错误,则不会将任何内容写入 Params
。
gl:getAttachedShaders/2
返回附加到 Program
的着色器对象的名称。附加到 Program
的着色器对象的名称将在 Shaders
中返回。写入 Shaders
中的着色器名称的实际数量在 Count
中返回。如果没有任何着色器对象附加到 Program
,则 Count
设置为 0。 Shaders
中可能返回的最大着色器名称数量由 MaxCount
指定。
gl:getAttribLocation/2
查询由 Program
指定的先前链接的程序对象中由 Name
指定的属性变量,并返回绑定到该属性变量的通用顶点属性的索引。如果 Name
是矩阵属性变量,则返回矩阵第一列的索引。如果命名的属性变量不是指定程序对象中的活动属性,或者如果 Name
以保留前缀“gl_”开头,则返回 -1 的值。
gl:getBufferParameteriv/2
在 Data
中返回由 Target
指定的缓冲区对象的选定参数。
这些函数在 Data
中返回指定缓冲区对象的选定参数。
gl:getBufferSubData/4
和 glGetNamedBufferSubData
返回指定缓冲区对象的数据存储的全部或部分数据内容。从缓冲区对象的数据存储中将起始于字节偏移量 Offset
并扩展 Size
字节的数据复制到 Data
指向的内存中。如果缓冲区对象当前已映射,或者如果 Offset
和 Size
一起定义超出缓冲区对象数据存储范围的范围,则会抛出错误。
gl:getClipPlane/1
在 Equation
中返回 Plane
的平面方程的四个系数。
gl:getColorTable/4
在 Table
中返回由 Target
指定的颜色表的内容。不执行像素传输操作,但执行适用于 gl:readPixels/7
的像素存储模式。
返回特定于颜色表 Target
的参数。
gl:getCompressedTexImage/3
和 glGetnCompressedTexImage
将与 Target
和 Lod
关联的压缩纹理图像返回到 Pixels
中。glGetCompressedTextureImage
的作用相同,但它不是采用纹理目标,而是采用纹理对象的 ID。Pixels
对于 glGetnCompresedTexImage
和 glGetCompressedTextureImage
函数应为 BufSize
字节的数组,对于 gl:getCompressedTexImage/3
应为 ?GL_TEXTURE_COMPRESSED_IMAGE_SIZE
字节。如果实际数据占用的空间小于 BufSize
,则不会触及剩余字节。 Target
指定纹理目标,该函数应从中提取数据的纹理绑定到该目标。Lod
指定所需图像的详细程度编号。
gl:getConvolutionFilter/4
返回当前 1D 或 2D 卷积滤波器内核作为图像。根据 Format
和 Type
中的规范,将一维或二维图像放置在 Image
中。不在此图像上执行像素传输操作,但会应用相关的像素存储模式。
gl:getConvolutionParameter()
检索卷积参数。Target
确定查询哪个卷积滤波器。Pname
确定返回哪个参数
gl:getDebugMessageLog/2
从调试消息日志中检索消息。从日志中检索最多 Count
条消息。如果 Sources
不为 NULL,则将每条消息的来源写入数组的最多 Count
个元素中。如果 Types
不为 NULL,则将每条消息的类型写入数组的最多 Count
个元素中。如果 Id
不为 NULL,则将每条消息的标识符写入数组的最多 Count
个元素中。如果 Severities
不为 NULL,则将每条消息的严重性写入数组的最多 Count
个元素中。如果 Lengths
不为 NULL,则将每条消息的长度写入数组的最多 Count
个元素中。
gl:getError/0
返回错误标志的值。每个可检测到的错误都被分配一个数字代码和符号名称。当发生错误时,错误标志会被设置为相应的错误代码值。在调用 gl:getError/0
之前,不会记录其他错误,该错误代码将被返回,并且标志将被重置为 ?GL_NO_ERROR
。如果调用 gl:getError/0
返回 ?GL_NO_ERROR
,则表示自上次调用 gl:getError/0
或自 GL 初始化以来,没有发生可检测到的错误。
gl:getFragDataIndex/2
返回当程序对象 Program
最后一次链接时,变量 Name
被绑定到的片段颜色的索引。如果 Name
不是 Program
的 varying out 变量,或者发生错误,将返回 -1。
gl:getFragDataLocation/2
检索程序 Program
的用户定义 varying out 变量 Name
的指定颜色编号绑定。Program
必须先前已链接。Name
必须是以 null 结尾的字符串。如果 Name
不是 Program
中活跃的用户定义 varying out 片段着色器变量的名称,将返回 -1。
gl:getFramebufferAttachmentParameteriv/3
和 glGetNamedFramebufferAttachmentParameteriv
返回指定帧缓冲对象附件的参数。
gl:getFramebufferParameteriv/2
和 glGetNamedFramebufferParameteriv
查询指定帧缓冲对象的参数。
某些事件可能导致 GL 上下文重置。这种重置会导致所有上下文状态丢失,并要求应用程序在受影响的上下文中重新创建所有对象。
gl:getHistogram/5
返回当前直方图表,作为一个一维图像,其宽度与直方图相同。此图像不执行像素传输操作,但适用于 1D 图像的像素存储模式将受到尊重。
gl:getHistogramParameter()
用于查询当前直方图或代理的参数值。可以通过使用 Target
为 ?GL_HISTOGRAM
(获取当前直方图表的信息)或 ?GL_PROXY_HISTOGRAM
(获取最近代理请求的信息)以及 Pname
参数的以下值之一调用 gl:getHistogramParameter()
来查询直方图状态信息。
这些命令返回 GL 中简单状态变量的值。Pname
是一个符号常量,指示要返回的状态变量,而 Data
是一个指向要放置返回数据的指定类型的数组的指针。
gl:getLight()
在 Params
中返回光源参数的值。 Light
命名光源,并且是 ?GL_LIGHT
i 形式的符号名称,其中 i 的范围从 0 到 ?GL_MAX_LIGHTS
- 1。?GL_MAX_LIGHTS
是一个实现相关的常量,大于或等于 8。Pname
通过符号名称指定十个光源参数之一。
glMap1
和 glMap2
定义评估器。 gl:getMap()
返回评估器参数。 Target
选择一个映射, Query
选择一个特定的参数,并且 V
指向将要返回值的存储位置。
gl:getMaterial()
在 Params
中返回材质 Face
的参数 Pname
的值。定义了六个参数
gl:getMinmax/5
返回累积的最小和最大像素值(基于每个组件计算),在一个宽度为 2 的一维图像中。第一组返回值是最小值,第二组返回值是最大值。返回值的格式由 Format
确定,其类型由 Types
确定。
gl:getMinmaxParameter()
通过将 Pname
设置为以下值之一来检索当前 minmax 表的参数
gl:getMultisamplefv/2
查询给定样本的位置。 Pname
指定要检索的样本参数,并且必须为 ?GL_SAMPLE_POSITION
。 Index
对应于应返回其位置的样本。样本位置在 Val[0]
和 Val[1]
中作为两个浮点值返回,每个值都在 0 到 1 之间,分别对应于该样本在 GL 像素空间中的 X
和 Y
位置。(0.5, 0.5) 这对应于像素中心。Index
必须在零和 ?GL_SAMPLES
的值减一之间。
有关 Map
参数的可接受值的说明,请参见 gl:pixelMap()
参考页。gl:getPixelMap()
在 Data
中返回 Map
中指定的像素映射的内容。像素映射在执行 gl:readPixels/7
, gl:drawPixels/5
, gl:copyPixels/5
, gl:texImage1D/8
, gl:texImage2D/9
, gl:texImage3D/10
, gl:texSubImage1D/7
, gl:texSubImage2D/9
, gl:texSubImage3D/11
, gl:copyTexImage1D/7
, gl:copyTexImage2D/8
, gl:copyTexSubImage1D/6
, gl:copyTexSubImage2D/8
, 和 gl:copyTexSubImage3D/9
期间使用,以将颜色索引、模板索引、颜色分量和深度分量映射到其他值。
gl:getPolygonStipple/0
向 Pattern
返回一个 32×32 多边形点画模式。该模式被打包到内存中,就像调用了 gl:readPixels/7
,其 height
和 width
都为 32,type
为 ?GL_BITMAP
,format
为 ?GL_COLOR_INDEX
,并且点画模式存储在内部 32×32 颜色索引缓冲区中。但是,与 gl:readPixels/7
不同,像素传输操作(移位、偏移、像素映射)不会应用于返回的点画图像。
gl:getProgramBinary/2
将 Program
的已编译和链接的可执行文件的二进制表示返回到字节数组中,该数组的地址在 Binary
中指定。可以写入 Binary
的最大字节数由 BufSize
指定。如果程序二进制文件的大小大于 BufSize
字节,则会生成错误,否则写入 Binary
的实际字节数将返回到由 Length
给定地址的变量中。如果 Length
为 ?NULL
,则不返回长度。
gl:getProgramInfoLog/2
返回指定程序对象的信息日志。当程序对象被链接或验证时,程序对象的信息日志将被修改。返回的字符串将以 null 结尾。
gl:getProgramInterfaceiv/3
查询 Program
中由 ProgramInterface
标识的接口的属性,其属性名称由 Pname
给出。
gl:getProgram()
在 Params
中返回特定程序对象的参数值。定义了以下参数
gl:getProgramPipelineInfoLog/2
检索程序管线对象 Pipeline
的信息日志。信息日志(包括其 null 终止符)被写入字符数组,该数组的地址由 InfoLog
给出。可以写入 InfoLog
的最大字符数由 BufSize
给出,并且写入 InfoLog
的实际字符数返回到由 Length
给定地址的整数中。如果 Length
为 ?NULL
,则不返回长度。
gl:getProgramPipelineiv/2
检索程序管线对象 Pipeline
的属性值。 Pname
指定要检索其值的参数的名称。参数的值被写入由 Params
给定地址的变量中。
gl:getProgramResourceIndex/3
返回分配给程序对象 Program
的接口类型 ProgramInterface
中名为 Name
的资源的无符号整数索引。
gl:getProgramResourceLocation/3
返回分配给程序对象 Program
的接口 ProgramInterface
中名为 Name
的变量的位置。Program
必须是已成功链接的程序的名称。ProgramInterface
必须是 ?GL_UNIFORM
, ?GL_PROGRAM_INPUT
, ?GL_PROGRAM_OUTPUT
, ?GL_VERTEX_SUBROUTINE_UNIFORM
, ?GL_TESS_CONTROL_SUBROUTINE_UNIFORM
, ?GL_TESS_EVALUATION_SUBROUTINE_UNIFORM
, ?GL_GEOMETRY_SUBROUTINE_UNIFORM
, ?GL_FRAGMENT_SUBROUTINE_UNIFORM
, ?GL_COMPUTE_SUBROUTINE_UNIFORM
, 或 ?GL_TRANSFORM_FEEDBACK_BUFFER
之一。
gl:getProgramResourceLocationIndex/3
返回程序对象 Program
中接口 ProgramInterface
中名为 Name
的变量分配的片段颜色索引。Program
必须是已成功链接的程序的名称。ProgramInterface
必须是 ?GL_PROGRAM_OUTPUT
。
gl:getProgramResourceName/4
检索程序对象 Program
的接口 ProgramInterface
中索引为 Index
的单个活动资源的名称字符串。Index
必须小于 ProgramInterface
的活动资源列表中的条目数。
gl:getProgramStage()
查询附加到程序对象的着色器阶段的参数。Program
包含附加着色器的程序的名称。Shadertype
指定要从中查询参数的阶段。Pname
指定应查询哪个参数。要查询的参数的值将返回到 Values
中指定的地址的变量中。
gl:getQueryIndexediv/3
在 Params
中返回由 Target
和 Index
指定的索引查询对象目标的选定参数。Index
指定查询对象目标的索引,并且必须在零和一个特定于目标的最大值之间。
gl:getQueryiv/2
在 Params
中返回由 Target
指定的查询对象目标的选定参数。
这些命令返回由 Id
指定的查询对象的选定参数。gl:getQueryObject()
在 Params
中返回由 Id
指定的查询对象的选定参数。gl:getQueryBufferObject()
通过将其写入 Buffer
在 Offset
指定的字节偏移量的数据存储中,返回由 Id
指定的查询对象的选定参数。
gl:getRenderbufferParameteriv/2
和 glGetNamedRenderbufferParameteriv
查询指定渲染缓冲区对象的参数。
gl:getSamplerParameter()
在 Params
中返回指定为 Pname
的采样器参数的值。Sampler
定义目标采样器,并且必须是先前调用 gl:genSamplers/1
返回的现有采样器对象的名称。Pname
接受与 gl:samplerParameter()
相同的符号,并且具有相同的解释。
gl:getShaderInfoLog/2
返回指定着色器对象的信息日志。当编译着色器时,会修改着色器对象的信息日志。返回的字符串将以 null 结尾。
gl:getShader()
在 Params
中返回特定着色器对象的参数值。定义了以下参数
gl:getShaderPrecisionFormat/2
检索在指定的着色器类型中,实现对不同数值格式的数量表示的数值范围和精度。ShaderType
指定要检索其数值精度和范围的着色器类型,并且必须是 ?GL_VERTEX_SHADER
或 ?GL_FRAGMENT_SHADER
之一。PrecisionType
指定要查询的数值格式,并且必须是 ?GL_LOW_FLOAT
、?GL_MEDIUM_FLOAT
、?GL_HIGH_FLOAT
、?GL_LOW_INT
、?GL_MEDIUM_INT
或 ?GL_HIGH_INT
之一。
gl:getShaderSource/2
返回由 Shader
指定的着色器对象中的源代码字符串的串联。着色器对象的源代码字符串是先前调用 gl:shaderSource/2
的结果。该函数返回的字符串将以 null 结尾。
gl:getString/1
返回一个指向静态字符串的指针,该字符串描述当前 GL 连接的某些方面。Name
可以是以下之一
gl:getSubroutineIndex/3
返回附加到程序对象的着色器阶段中的子例程统一变量的索引。Program
包含附加着色器的程序的名称。Shadertype
指定要从中查询着色器子例程索引的阶段。Name
包含要查询的子例程统一变量的 null 结尾的名称。
gl:getSubroutineUniformLocation/3
返回附加到 Program
的类型为 Shadertype
的着色器阶段中子例程统一变量 Name
的位置,其行为与其他方面与 gl:getUniformLocation/2
相同。
gl:getSynciv/3
检索同步对象的属性。Sync
指定要检索其属性的同步对象的名称。
gl:getTexEnv()
在 Params
中返回使用 gl:texEnv()
指定的纹理环境的选定值。Target
指定纹理环境。
gl:getTexGen()
在 Params
中返回使用 gl:texGen()
指定的纹理坐标生成函数的选定参数。Coord
使用符号常量 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
来命名 ( s
、t
、r
、q
) 纹理坐标之一。
gl:getTexImage/5
、glGetnTexImage
和 glGetTextureImage
函数将纹理图像返回到 Pixels
中。对于 gl:getTexImage/5
和 glGetnTexImage
,Target
指定所需的纹理图像是 gl:texImage1D/8
(?GL_TEXTURE_1D
)、gl:texImage2D/9
(?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_2D
或任何 ?GL_TEXTURE_CUBE_MAP_*
) 或 gl:texImage3D/10
(?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP_ARRAY
) 指定的图像。对于 glGetTextureImage
,Texture
指定纹理对象名称。除了 gl:getTexImage/5
和 glGetnTexImage
接受的纹理类型之外,该函数还接受立方体贴图纹理对象(有效目标为 ?GL_TEXTURE_CUBE_MAP
)。Level
指定所需图像的详细级别编号。Format
和 Type
指定所需图像数组的格式和类型。有关 Format
和 Type
参数的可接受值的描述,请参见 gl:texImage1D/8
的参考页。对于 glGetnTexImage 和 glGetTextureImage 函数,bufSize 指示接收检索到的像素数据的缓冲区大小。glGetnTexImage
和 glGetTextureImage
写入 Pixels
的字节数不超过 BufSize
。
gl:getTexLevelParameterfv/3
, gl:getTexLevelParameteriv/3
, glGetTextureLevelParameterfv
和 glGetTextureLevelParameteriv
在 Params
中返回特定细节层次值(由 Level
指定)的纹理参数值。 对于前两个函数,Target
定义目标纹理,可以是 ?GL_TEXTURE_1D
,?GL_TEXTURE_2D
,?GL_TEXTURE_3D
,?GL_PROXY_TEXTURE_1D
,?GL_PROXY_TEXTURE_2D
,?GL_PROXY_TEXTURE_3D
,?GL_TEXTURE_CUBE_MAP_POSITIVE_X
,?GL_TEXTURE_CUBE_MAP_NEGATIVE_X
,?GL_TEXTURE_CUBE_MAP_POSITIVE_Y
,?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
,?GL_TEXTURE_CUBE_MAP_POSITIVE_Z
,?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
或 ?GL_PROXY_TEXTURE_CUBE_MAP
。 后两个函数接收一个 Texture
参数,该参数指定纹理对象的名称。
gl:getTexParameter()
和 glGetTextureParameter
在 Params
中返回指定为 Pname
的纹理参数的一个或多个值。Target
定义目标纹理。?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
分别指定一维、二维或三维纹理,一维数组、二维数组、矩形、立方体贴图或立方体贴图数组、二维多重采样或二维多重采样数组纹理。Pname
接受与 gl:texParameter()
相同的符号,并具有相同的解释。
可以通过调用 gl:getTransformFeedbackVarying/3
来检索链接程序中将在变换反馈期间捕获的可变变量集的相关信息。gl:getTransformFeedbackVarying/3
提供有关由 Index
选择的可变变量的信息。 Index
为 0 选择传递给 gl:transformFeedbackVaryings/3
的 Varyings
数组中指定的第一个可变变量,Index
的值为 ?GL_TRANSFORM_FEEDBACK_VARYINGS
减一时选择最后一个这样的变量。
gl:getUniformBlockIndex/2
检索 Program
中统一块的索引。
gl:getUniformIndices/2
检索 Program
中多个 uniform 变量的索引。
glGetUniformLocation
返回一个整数,表示程序对象中特定 uniform 变量的位置。 Name
必须是一个不包含空格的空终止字符串。Name
必须是 Program
中一个活跃的 uniform 变量名,它不是结构体、结构体数组或向量或矩阵的子组件。如果 Name
不对应于 Program
中的活跃 uniform 变量,如果 Name
以保留前缀“gl_”开头,或者如果 Name
与原子计数器或命名的 uniform 块关联,则此函数返回 -1。
gl:getUniformSubroutine()
检索当前程序着色器阶段 Shadertype
中位置 Location
处的子例程 uniform 的值。 Location
必须小于当前正在着色器阶段 Shadertype
中使用的着色器的 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
的值。子例程 uniform 的值在 Values
中返回。
gl:getUniform()
和 glGetnUniform
在 Params
中返回指定 uniform 变量的一个或多个值。由 Location
指定的 uniform 变量的类型确定返回的值的数量。如果 uniform 变量在着色器中定义为布尔值、整数或浮点数,则将返回单个值。如果将其定义为 vec2、ivec2 或 bvec2,则将返回两个值。如果将其定义为 vec3、ivec3 或 bvec3,则将返回三个值,依此类推。要查询声明为数组的 uniform 变量中存储的值,请为数组的每个元素调用 gl:getUniform()
。要查询声明为结构的 uniform 变量中存储的值,请为结构中的每个字段调用 gl:getUniform()
。声明为矩阵的 uniform 变量的值将以列优先顺序返回。
gl:getVertexAttrib()
在 Params
中返回通用顶点属性参数的值。要查询的通用顶点属性由 Index
指定,要查询的参数由 Pname
指定。
当有解释空间时,可以使用提示来控制 GL 行为的某些方面。提示使用两个参数指定。Target
是一个符号常量,指示要控制的行为,Mode
是另一个符号常量,指示所需的行为。每个 Target
的初始值为 ?GL_DONT_CARE
。Mode
可以是以下之一
当启用 ?GL_HISTOGRAM
时,RGBA 颜色分量将通过限制在 [0,1] 范围内、乘以直方图表的宽度并四舍五入到最接近的整数来转换为直方图表索引。然后递增由 RGBA 索引选择的表条目。(如果直方图表的内部格式包括亮度,则从 R 颜色分量导出的索引确定要递增的亮度表条目。)如果直方图表条目递增超出其最大值,则其值变为未定义。(这不是错误。)
等效于 indexubv/1
。
等效于 indexubv/1
。
等效于 indexubv/1
。
等效于 indexubv/1
。
等效于 indexubv/1
。
等效于 indexubv/1
。
gl:indexMask/1
控制颜色索引缓冲区中各个位的写入。 Mask
的最低有效 n 位(其中 n 是颜色索引缓冲区中的位数)指定一个掩码。如果掩码中出现 1(一),则可以写入颜色索引缓冲区(或多个缓冲区)中的相应位。如果出现 0(零),则会写保护相应的位。
gl:indexPointer/3
指定渲染时要使用的颜色索引数组的位置和数据格式。Type
指定每个颜色索引的数据类型,Stride
指定从一个颜色索引到下一个颜色索引的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。
等效于 indexubv/1
。
等效于 indexubv/1
。
等效于 indexubv/1
。
gl:index()
更新当前(单值)颜色索引。它接受一个参数,即当前颜色索引的新值。
名称堆栈在选择模式期间使用,以允许唯一地标识渲染命令集。 它由一组有序的无符号整数组成。gl:initNames/0
使名称堆栈初始化为其默认的空状态。
gl:interleavedArrays/3
允许您指定和启用各个颜色、法线、纹理和顶点数组,这些数组的元素是较大的聚合数组元素的一部分。 对于某些实现,这比单独指定数组更有效。
gl:invalidateBufferData/1
使缓冲区对象的数据存储的所有内容无效。 无效后,缓冲区数据存储的内容变为未定义。
gl:invalidateBufferSubData/3
使缓冲区对象的数据存储的全部或部分内容无效。 无效后,缓冲区数据存储指定范围内的内容变为未定义。范围的开始由 Offset
给出,其大小由 Length
给出,均以基本机器单位测量。
gl:invalidateFramebuffer/2
和 glInvalidateNamedFramebufferData
使帧缓冲区的指定附件集的全部内容无效。
gl:invalidateSubFramebuffer/6
和 glInvalidateNamedFramebufferSubData
使帧缓冲区的指定附件集的指定区域的内容无效。
gl:invalidateTexSubImage/8
使纹理图像的所有内容无效。Texture
和 Level
指示正在使哪个纹理图像无效。执行此命令后,纹理图像中的数据将具有未定义的值。
gl:invalidateTexSubImage/8
使纹理图像的全部或部分内容无效。Texture
和 Level
指示正在使哪个纹理图像无效。执行此命令后,该子区域中的数据将具有未定义的值。Xoffset
、Yoffset
、Zoffset
、Width
、Height
和 Depth
的解释方式与 gl:texSubImage3D/11
中的解释方式相同。对于不具有某些维度的纹理目标,此命令将这些维度视为大小为 1。例如,要使二维纹理的一部分无效,应用程序应使用 Zoffset
等于零和 Depth
等于 1。立方体贴图纹理被视为 z 维度中的六个切片的数组,其中 Zoffset
的值被解释为指定面 ?GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ Zoffset
。
gl:isBuffer/1
如果 Buffer
当前是一个缓冲区对象的名称,则返回 ?GL_TRUE
。如果 Buffer
为零,或者是一个非零值,但当前不是缓冲区对象的名称,或者发生错误,则 gl:isBuffer/1
返回 ?GL_FALSE
。
如果 Cap
是一个已启用的功能,则 gl:isEnabled/1
返回 ?GL_TRUE
,否则返回 ?GL_FALSE
。可以使用 gl:isEnabledi/2
测试已索引的布尔状态。对于 gl:isEnabledi/2
,Index
指定要测试的功能的索引。Index
必须介于零和 Cap
的索引功能计数之间。最初,除 ?GL_DITHER
之外的所有功能都已禁用;?GL_DITHER
最初是启用的。
如果 Framebuffer
当前是一个帧缓冲区对象的名称,则 gl:isFramebuffer/1
返回 ?GL_TRUE
。如果 Framebuffer
为零,或者 ?framebuffer
不是帧缓冲区对象的名称,或者发生错误,则 gl:isFramebuffer/1
返回 ?GL_FALSE
。如果 Framebuffer
是由 gl:genFramebuffers/1
返回的名称,但尚未通过调用 gl:bindFramebuffer/2
进行绑定,则该名称不是帧缓冲区对象,并且 gl:isFramebuffer/1
返回 ?GL_FALSE
。
如果 List
是显示列表的名称,则 gl:isList/1
返回 ?GL_TRUE
,如果不是,或者发生错误,则返回 ?GL_FALSE
。
如果 Program
是先前使用 gl:createProgram/0
创建且尚未通过 gl:deleteProgram/1
删除的程序对象的名称,则 gl:isProgram/1
返回 ?GL_TRUE
。如果 Program
为零,或者是一个非零值,但不是程序对象的名称,或者发生错误,则 gl:isProgram/1
返回 ?GL_FALSE
。
如果 Pipeline
当前是一个程序管线对象的名称,则 gl:isProgramPipeline/1
返回 ?GL_TRUE
。如果 Pipeline
为零,或者 ?pipeline
不是程序管线对象的名称,或者发生错误,则 gl:isProgramPipeline/1
返回 ?GL_FALSE
。如果 Pipeline
是由 gl:genProgramPipelines/1
返回的名称,但尚未通过调用 gl:bindProgramPipeline/1
进行绑定,则该名称不是程序管线对象,并且 gl:isProgramPipeline/1
返回 ?GL_FALSE
。
如果 Id
当前是一个查询对象的名称,则 gl:isQuery/1
返回 ?GL_TRUE
。如果 Id
为零,或者是一个非零值,但当前不是查询对象的名称,或者发生错误,则 gl:isQuery/1
返回 ?GL_FALSE
。
如果 Renderbuffer
当前是一个渲染缓冲区对象的名称,则 gl:isRenderbuffer/1
返回 ?GL_TRUE
。如果 Renderbuffer
为零,或者 Renderbuffer
不是渲染缓冲区对象的名称,或者发生错误,则 gl:isRenderbuffer/1
返回 ?GL_FALSE
。如果 Renderbuffer
是由 gl:genRenderbuffers/1
返回的名称,但尚未通过调用 gl:bindRenderbuffer/2
或 gl:framebufferRenderbuffer/4
进行绑定,则该名称不是渲染缓冲区对象,并且 gl:isRenderbuffer/1
返回 ?GL_FALSE
。
如果 Id
当前是一个采样器对象的名称,则 gl:isSampler/1
返回 ?GL_TRUE
。如果 Id
为零,或者是一个非零值,但当前不是采样器对象的名称,或者发生错误,则 gl:isSampler/1
返回 ?GL_FALSE
。
如果 Shader
是先前使用 gl:createShader/1
创建且尚未通过 gl:deleteShader/1
删除的着色器对象的名称,则 gl:isShader/1
返回 ?GL_TRUE
。如果 Shader
为零,或者是一个非零值,但不是着色器对象的名称,或者发生错误,则 glIsShader
返回 ?GL_FALSE
。
如果 Sync
当前是同步对象的名称,则 gl:isSync/1
返回 ?GL_TRUE
。如果 Sync
不是同步对象的名称,或者发生错误,则 gl:isSync/1
返回 ?GL_FALSE
。请注意,零不是同步对象的名称。
如果 Texture
当前是纹理的名称,则 gl:isTexture/1
返回 ?GL_TRUE
。如果 Texture
为零,或者是一个非零值,但当前不是纹理的名称,或者发生错误,则 gl:isTexture/1
返回 ?GL_FALSE
。
如果 Id
当前是一个变换反馈对象的名称,则 gl:isTransformFeedback/1
返回 ?GL_TRUE
。如果 Id
为零,或者 ?id
不是变换反馈对象的名称,或者发生错误,则 gl:isTransformFeedback/1
返回 ?GL_FALSE
。如果 Id
是由 gl:genTransformFeedbacks/1
返回的名称,但尚未通过调用 gl:bindTransformFeedback/2
进行绑定,则该名称不是变换反馈对象,并且 gl:isTransformFeedback/1
返回 ?GL_FALSE
。
如果 Array
当前是一个顶点数组对象的名称,则 gl:isVertexArray/1
返回 ?GL_TRUE
。如果 Array
为零,或者 Array
不是顶点数组对象的名称,或者发生错误,则 gl:isVertexArray/1
返回 ?GL_FALSE
。如果 Array
是由 gl:genVertexArrays/1
返回的名称,但尚未通过调用 gl:bindVertexArray/1
进行绑定,则该名称不是顶点数组对象,并且 gl:isVertexArray/1
返回 ?GL_FALSE
。
gl:light()
设置各个光源参数的值。Light
命名光源,并且是 ?GL_LIGHT
i 形式的符号名称,其中 i 的范围从 0 到 ?GL_MAX_LIGHTS
- 1 的值。Pname
通过符号名称指定十个光源参数之一。Params
是单个值或指向包含新值的数组的指针。
gl:lightModel()
设置光照模型参数。Pname
命名参数,Params
给出新值。有三个光照模型参数
线条点画会屏蔽由光栅化产生的某些片段;这些片段不会被绘制。屏蔽是通过使用三个参数实现的:16 位线条点画模式 Pattern
、重复计数 Factor
和整数点画计数器 s。
gl:lineWidth/1
指定别名线和抗锯齿线的栅格化宽度。使用 1 以外的线宽具有不同的效果,具体取决于是否启用了线抗锯齿。要启用和禁用线抗锯齿,请使用参数 ?GL_LINE_SMOOTH
调用 gl:enable/1
和 gl:disable/1
。线抗锯齿最初是禁用的。
gl:linkProgram/1
链接由 Program
指定的程序对象。如果任何类型为 ?GL_VERTEX_SHADER
的着色器对象附加到 Program
,则它们将用于创建将在可编程顶点处理器上运行的可执行文件。如果任何类型为 ?GL_GEOMETRY_SHADER
的着色器对象附加到 Program
,则它们将用于创建将在可编程几何处理器上运行的可执行文件。如果任何类型为 ?GL_FRAGMENT_SHADER
的着色器对象附加到 Program
,则它们将用于创建将在可编程片段处理器上运行的可执行文件。
gl:callLists/1
指定偏移量数组。显示列表名称是通过将 Base
添加到每个偏移量生成的。执行引用有效显示列表的名称;其他名称被忽略。
gl:loadIdentity/0
将当前矩阵替换为单位矩阵。它在语义上等效于使用单位矩阵调用 gl:loadMatrix()
gl:loadMatrix()
用 M
指定的元素替换当前矩阵。当前矩阵是投影矩阵、模型视图矩阵或纹理矩阵,具体取决于当前的矩阵模式(参见 gl:matrixMode/1
)。
在选择模式期间,使用名称堆栈来唯一标识渲染命令集。它由一组有序的无符号整数组成,初始为空。
gl:loadTransposeMatrix()
用 M
指定的元素替换当前矩阵。当前矩阵是投影矩阵、模型视图矩阵或纹理矩阵,具体取决于当前的矩阵模式(参见 gl:matrixMode/1
)。
gl:logicOp/1
指定一个逻辑操作,当启用时,它将在传入的 RGBA 颜色和帧缓冲区中相应位置的 RGBA 颜色之间应用。要启用或禁用逻辑操作,请使用符号常量 ?GL_COLOR_LOGIC_OP
调用 gl:enable/1
和 gl:disable/1
。初始值是禁用状态。
求值器提供了一种使用多项式或有理多项式映射来生成顶点、法线、纹理坐标和颜色的方法。求值器生成的值被发送到 GL 处理的后续阶段,就像它们是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈现的一样,只是生成的值不更新当前的法线、纹理坐标或颜色。
求值器提供了一种使用多项式或有理多项式映射来生成顶点、法线、纹理坐标和颜色的方法。求值器生成的值被发送到 GL 处理的后续阶段,就像它们是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈现的一样,只是生成的值不更新当前的法线、纹理坐标或颜色。
gl:mapGrid()
和 gl:evalMesh()
一起使用,以有效地生成和计算一系列均匀间隔的映射域值。 gl:evalMesh()
步进一维或二维网格的整数域,该范围是 glMap1
和 glMap2
指定的计算映射的域。
gl:material()
将值分配给材质参数。有两组匹配的材质参数。一组是 front-facing
集,用于为点、线、位图和所有多边形(当禁用双面照明时)或仅为正面多边形(当启用双面照明时)着色。另一组 back-facing
仅在启用双面照明时用于为背面多边形着色。有关单面和双面照明计算的详细信息,请参阅 gl:lightModel()
参考页。
gl:matrixMode/1
设置当前矩阵模式。 Mode
可以采用四个值之一
gl:memoryBarrier/1
定义一个屏障,该屏障对在命令之前发出的内存事务相对于在屏障之后发出的内存事务进行排序。为了进行此排序,由着色器执行的内存事务被认为是由触发着色器执行的渲染命令发出的。Barriers
是一个位字段,指示与着色器存储同步的操作集; Barriers
中使用的位如下
当启用 ?GL_MINMAX
时,传入像素的 RGBA 分量将与每个分量的最小值和最大值进行比较,这些值存储在两元素的 minmax 表中。(第一个元素存储最小值,第二个元素存储最大值。)如果像素分量大于最大元素中的相应分量,则使用像素分量值更新最大元素。如果像素分量小于最小元素中的相应分量,则使用像素分量值更新最小元素。(在这两种情况下,如果 minmax 表的内部格式包含亮度,则传入像素的 R 颜色分量将用于比较。)可以通过调用 gl:getMinmax/5
稍后检索 minmax 表的内容。可以通过分别调用 gl:enable/1
或 gl:disable/1
并使用 ?GL_MINMAX
的参数来启用或禁用 minmax 操作。
gl:minSampleShading/1
指定在覆盖的像素内对样本进行着色的速率。通过使用参数 ?GL_SAMPLE_SHADING
调用 gl:enable/1
来启用样本率着色。如果禁用 ?GL_MULTISAMPLE
或 ?GL_SAMPLE_SHADING
,则样本着色不起作用。否则,实现必须为每个覆盖的片段提供至少与 Value
乘以 Samples
指定的唯一颜色值一样多的唯一颜色值,其中 Samples
是当前帧缓冲区的 ?GL_SAMPLES
的值。为每个覆盖的片段生成至少 1 个样本。
gl:multiDrawArrays/3
使用很少的子例程调用指定多组几何图元。您可以预先指定单独的顶点、法线和颜色数组,而不是调用 GL 过程来传递每个单独的顶点、法线、纹理坐标、边缘标志或颜色,然后使用它们通过单次调用 gl:multiDrawArrays/3
来构造一系列图元。
gl:multiDrawArraysIndirect/4
使用很少的子例程调用指定多个几何图元。gl:multiDrawArraysIndirect/4
的行为类似于多次调用 gl:drawArraysInstancedBaseInstance/5
,但对 gl:drawArraysInstancedBaseInstance/5
的每次调用的参数都存储在 Indirect
给出的地址的内存中的数组中,由 Stride
指定的基本机器单位中的步幅分隔。如果 Stride
为零,则假定数组在内存中紧密打包。
gl:multiTexCoord()
指定一维、二维、三维或四维的纹理坐标。 gl:multiTexCoord1()
将当前纹理坐标设置为 (s 0 0 1);调用 gl:multiTexCoord2()
会将其设置为 (s t 0 1)。类似地, gl:multiTexCoord3()
将纹理坐标指定为 (s t r 1),而 gl:multiTexCoord4()
显式定义所有四个分量为 (s t r q)。
gl:multMatrix()
将当前矩阵与使用 M
指定的矩阵相乘,并用乘积替换当前矩阵。
gl:multTransposeMatrix()
将当前矩阵与使用 M
指定的矩阵相乘,并用乘积替换当前矩阵。
显示列表是已存储以供后续执行的 GL 命令组。显示列表使用 gl:newList/2
创建。所有后续命令都按发出顺序放置在显示列表中,直到调用 gl:endList/0
为止。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
只要发出 gl:normal()
,当前法线就会设置为给定的坐标。字节、短整型或整数参数会使用线性映射转换为浮点格式,该映射将最正的可表示整数值映射为 1.0,并将最负的可表示整数值映射为 -1.0。
gl:normalPointer/3
指定渲染时使用的法线数组的位置和数据格式。Type
指定每个法线坐标的数据类型,Stride
指定从一个法线到下一个法线的字节跨度,允许将顶点和属性打包到单个数组或存储在单独的数组中。(在某些实现中,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
gl:objectPtrLabel/3
标记由 Ptr
标识的同步对象。
gl:ortho/6
描述产生平行投影的变换。当前矩阵(请参阅 gl:matrixMode/1
)乘以该矩阵,结果替换当前矩阵,如同使用以下矩阵作为参数调用 gl:multMatrix()
一样
gl:patchParameter()
指定将用于面片图元的参数。Pname
指定要修改的参数,并且必须是 ?GL_PATCH_VERTICES
、?GL_PATCH_DEFAULT_OUTER_LEVEL
或 ?GL_PATCH_DEFAULT_INNER_LEVEL
。对于 gl:patchParameteri/2
,Value
指定由 Pname
指定的参数的新值。对于 gl:patchParameterfv/2
,Values
指定包含由 Pname
指定的参数的新值的数组的地址。
gl:pauseTransformFeedback/0
暂停当前活动的变换反馈对象上的变换反馈操作。当变换反馈操作暂停时,变换反馈仍然被认为是活动的,并且更改与该对象相关的大多数变换反馈状态会导致错误。但是,可以在变换反馈暂停时绑定新的变换反馈对象。
gl:pixelMap()
设置转换表或 maps
,供 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
使用。此外,如果支持 ARB_imaging 子集,则例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
也使用。这些映射的用法在 gl:pixelTransfer()
参考页中完整描述,并在像素和纹理图像命令的参考页中部分描述。本参考页中仅描述映射的规范。
gl:pixelStore()
设置影响后续 gl:readPixels/7
操作的像素存储模式,以及纹理图案的解包(请参阅 gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
、gl:texSubImage3D/11
)、gl:compressedTexImage1D/7
、gl:compressedTexImage2D/8
、gl:compressedTexImage3D/9
、gl:compressedTexSubImage1D/7
、gl:compressedTexSubImage2D/9
或 gl:compressedTexSubImage1D/7
。
gl:pixelTransfer()
设置像素传输模式,该模式影响后续的 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
命令。此外,如果支持 ARB_imaging 子集,则例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
也会受到影响。像素传输模式指定的算法在从帧缓冲区读取像素后(gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
和 gl:readPixels/7
),或从客户端内存解包后(gl:drawPixels/5
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
)对像素进行操作。像素传输操作按照相同的顺序和相同的方式进行,无论哪个命令导致像素操作。像素存储模式(请参阅 gl:pixelStore()
)控制从客户端内存读取的像素的解包以及写回客户端内存的像素的打包。
gl:pixelZoom/2
指定 x 和 y 缩放因子的值。在执行 gl:drawPixels/5
或 gl:copyPixels/5
期间,如果 ( xr, yr) 是当前的栅格位置,并且给定元素位于像素矩形的第 m 行和第 n 列,则中心位于以下矩形中的像素
以下值可用于 Pname
gl:pointSize/1
指定点的栅格化直径。如果禁用点大小模式(请参阅使用参数 ?GL_PROGRAM_POINT_SIZE
的 gl:enable/1
),则此值将用于栅格化点。否则,将使用写入着色语言内置变量 gl_PointSize 的值。
gl:polygonMode/2
控制用于栅格化的多边形的解释。Face
描述 Mode
应用于哪个多边形:正面和背面多边形 (?GL_FRONT_AND_BACK
)。多边形模式仅影响多边形的最终栅格化。特别是,在应用这些模式之前,多边形的顶点会被照亮,并且多边形会被裁剪并可能被剔除。
当启用 ?GL_POLYGON_OFFSET_FILL
、?GL_POLYGON_OFFSET_LINE
或 ?GL_POLYGON_OFFSET_POINT
时,每个片段的 depth
值将在从适当顶点的 depth
值插值后进行偏移。偏移的值为 factor×DZ+r×units,其中 DZ 是多边形相对于屏幕区域的深度变化测量值,r 是保证为给定实现产生可解析偏移的最小值。在执行深度测试之前,并在将值写入深度缓冲区之前添加偏移。
多边形点画,如线条点画(请参阅 gl:lineStipple/2
),会屏蔽栅格化产生的某些片段,从而创建图案。点画独立于多边形抗锯齿。
等效于 pushAttrib/1
。
等效于 pushMatrix/0
。
等效于 pushName/1
。
gl:primitiveRestartIndex/1
指定在启用图元重启时特殊对待的顶点数组元素。这称为图元重启索引。
gl:prioritizeTextures/2
将 Priorities
中给出的 N
个纹理优先级分配给 Textures
中命名的 N
个纹理。
gl:programBinary/3
使用先前从 gl:getProgramBinary/2
返回的程序二进制文件加载程序对象。BinaryFormat
和 Binary
必须是先前调用 gl:getProgramBinary/2
返回的值,并且 Length
必须是 gl:getProgramBinary/2
返回的长度,或者在 Pname
设置为 ?GL_PROGRAM_BINARY_LENGTH
时调用 gl:getProgram()
返回的长度。如果未满足这些条件,则加载程序二进制文件将失败,并且 Program
的 ?GL_LINK_STATUS
将设置为 ?GL_FALSE
。
gl:programParameter()
为程序对象 Program
指定由 Pname
命名的参数的新值。
gl:programUniform()
修改 uniform 变量或 uniform 变量数组的值。要修改的 uniform 变量的位置由 Location
指定,它应该是 gl:getUniformLocation/2
返回的值。gl:programUniform()
操作由 Program
指定的程序对象。
Flatshading
顶点着色器可变输出意味着为图元的每个顶点分配该输出的相同值。从中导出这些值的顶点称为 provoking vertex
,gl:provokingVertex/1
指定哪个顶点用作平面着色可变数据的来源。
gl:pushAttrib/1
接受一个参数,一个掩码,指示要保存在属性堆栈上的状态变量组。使用符号常量在掩码中设置位。Mask
通常通过指定几个这些常量的按位或来构造。特殊掩码 ?GL_ALL_ATTRIB_BITS
可用于保存所有可堆叠状态。
gl:pushClientAttrib/1
接受一个参数,一个掩码,指示要保存在客户端属性堆栈上的客户端状态变量组。使用符号常量在掩码中设置位。Mask
通常通过指定几个这些常量的按位或来构造。特殊掩码 ?GL_CLIENT_ALL_ATTRIB_BITS
可用于保存所有可堆叠客户端状态。
gl:pushDebugGroup/4
将由字符串 Message
描述的调试组推送到命令流中。Id
的值指定生成的消息的 ID。参数 Length
包含 Message
中的字符数。如果 Length
为负数,则表示 Message
包含一个以 null 结尾的字符串。消息具有指定的 Source
和 Id
,Type``?GL_DEBUG_TYPE_PUSH_GROUP
和 Severity``?GL_DEBUG_SEVERITY_NOTIFICATION
。GL 将在调试组堆栈的顶部放置一个新的调试组,该调试组继承先前驻留在调试组堆栈顶部的调试组的调试输出量控制。由于调试组是严格分层的,因此对调试输出量的任何其他控制都仅适用于活动调试组以及推送到活动调试组顶部的调试组。
每个矩阵模式都有一个矩阵堆栈。在 ?GL_MODELVIEW
模式下,堆栈深度至少为 32。在其他模式下,?GL_COLOR
、?GL_PROJECTION
和 ?GL_TEXTURE
,深度至少为 2。任何模式下的当前矩阵都是该模式堆栈顶部的矩阵。
在选择模式期间,使用名称堆栈来唯一标识渲染命令集。它由一组有序的无符号整数组成,初始为空。
gl:queryCounter/2
使 GL 将当前时间记录到名为 Id
的查询对象中。Target
必须是 ?GL_TIMESTAMP
。时间是在完全实现 GL 客户端和服务器状态以及帧缓冲区上的所有先前命令之后记录的。记录时间后,该对象的查询结果将被标记为可用。gl:queryCounter/2
计时器查询可以在目标为 ?GL_TIME_ELAPSED
的 gl:beginQuery/2
/ gl:endQuery/1
块内使用,它不会影响该查询对象的结果。
GL 在窗口坐标中维护一个 3D 位置。此位置称为光栅位置,用于定位像素和位图写入操作。它以亚像素精度维护。请参阅 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。
gl:readBuffer/1
指定一个颜色缓冲区作为后续 gl:readPixels/7
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
和 gl:copyTexSubImage3D/9
命令的来源。Mode
接受十二个或更多预定义值之一。在完全配置的系统中,?GL_FRONT
、?GL_LEFT
和 ?GL_FRONT_LEFT
都命名为前左缓冲区,?GL_FRONT_RIGHT
和 ?GL_RIGHT
命名为前右缓冲区,?GL_BACK_LEFT
和 ?GL_BACK
命名为后左缓冲区。此外,常量 ?GL_COLOR_ATTACHMENT``i
可用于指示第 i
个颜色附件,其中 i
的范围从零到 ?GL_MAX_COLOR_ATTACHMENTS
的值减一。
gl:readPixels/7
和 glReadnPixels
从帧缓冲区返回像素数据,从左下角位于位置 (X
, Y
) 的像素开始,到从位置 Data
开始的客户端内存中。多个参数控制像素数据在放入客户端内存之前的处理。这些参数使用 gl:pixelStore()
设置。此参考页描述了 gl:readPixels/7
和 glReadnPixels
对这些三个命令指定的大多数但并非全部参数的影响。
等效于 rectsv/2
。
等效于 rectsv/2
。
等效于 rectsv/2
。
gl:rect()
支持将矩形有效地指定为两个角点。每个矩形命令接受四个参数,这些参数组织为两个连续的 (x y) 坐标对,或两个指向数组的指针,每个数组包含一个 (x y) 对。生成的矩形在 z=0 平面中定义。
gl:releaseShaderCompiler/0
向实现提供一个提示,它可以释放与其着色器编译器关联的内部资源。gl:compileShader/1
随后可能会被调用,并且该实现在那时可能会重新分配先前通过调用 gl:releaseShaderCompiler/0
释放的资源。
gl:renderbufferStorage/4
等效于调用 gl:renderbufferStorageMultisample/5
,并将 Samples
设置为零,而 glNamedRenderbufferStorage
等效于调用 glNamedRenderbufferStorageMultisample
,并将样本设置为零。
gl:renderbufferStorageMultisample/5
和 glNamedRenderbufferStorageMultisample
建立渲染缓冲区对象的图像的数据存储、格式、维度和样本数。
gl:renderMode/1
设置光栅化模式。它接受一个参数,Mode
,它可以采用三个预定义值之一
gl:resetHistogram/1
将当前直方图表的所有元素重置为零。
gl:resetMinmax/1
将当前最小值最大值表的元素重置为其初始值:``最大'' 元素接收最小的可能分量值,而 ``最小'' 元素接收最大可能的组件值。
gl:resumeTransformFeedback/0
恢复当前活动变换反馈对象上的变换反馈操作。当变换反馈操作暂停时,变换反馈仍然被认为是活动的,并且更改与对象相关的大多数变换反馈状态会导致错误。但是,可以在暂停变换反馈时绑定一个新的变换反馈对象。
gl:rotate()
产生一个围绕向量 (x y z) 旋转 Angle
度的旋转。当前矩阵(参见 gl:matrixMode/1
)与一个旋转矩阵相乘,并将乘积替换当前矩阵,如同调用了 gl:multMatrix()
,并使用以下矩阵作为其参数。
多重采样在多个与实现相关的子像素位置多次采样像素,以产生抗锯齿效果。如果启用了多重采样,它将透明地对点、线、多边形和图像进行抗锯齿处理。
gl:sampleMaski/2
设置多字采样掩码 ?GL_SAMPLE_MASK_VALUE
的一个 32 位子字。
gl:samplerParameter()
将 Params
中的值或多个值赋给指定为 Pname
的采样器参数。Sampler
指定要修改的采样器对象,并且必须是先前调用 gl:genSamplers/1
返回的采样器对象的名称。以下符号在 Pname
中被接受
等效于 scalef/3
。
gl:scale()
产生沿 x
、y
和 z
轴的不均匀缩放。这三个参数指示沿三个轴中的每一个轴所需的缩放因子。
gl:scissor/4
在窗口坐标中定义一个称为剪刀盒的矩形。前两个参数 X
和 Y
指定该框的左下角。Width
和 Height
指定该框的宽度和高度。
gl:scissorArrayv/2
为每个视口在窗口坐标中定义称为剪刀盒的矩形。First
指定要修改的第一个剪刀盒的索引,Count
指定要修改的剪刀盒的数量。First
必须小于 ?GL_MAX_VIEWPORTS
的值,并且 First
+ Count
必须小于或等于 ?GL_MAX_VIEWPORTS
的值。V
指定一个整数数组的地址,该数组按顺序指定剪刀盒的左下角以及剪刀盒的宽度和高度。
gl:scissorIndexed/5
为指定的视口定义剪刀盒。Index
指定要修改的剪刀盒的索引。Index
必须小于 ?GL_MAX_VIEWPORTS
的值。对于 gl:scissorIndexed/5
,Left
、Bottom
、Width
和 Height
分别指定剪刀盒的左侧、底部、宽度和高度(以像素为单位)。对于 gl:scissorIndexedv/2
,V
指定一个整数数组的地址,该数组按顺序指定剪刀盒的左下角以及剪刀盒的宽度和高度。
GL 存储一个主四值 RGBA 颜色和一个次四值 RGBA 颜色(其中 alpha 始终设置为 0.0),这两个颜色与每个顶点关联。
gl:secondaryColorPointer/4
指定在渲染时使用的颜色分量数组的位置和数据格式。Size
指定每个颜色的分量数,并且必须为 3。Type
指定每个颜色分量的数据类型,Stride
指定从一种颜色到下一种颜色的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。
gl:selectBuffer/2
有两个参数:Buffer
是指向无符号整数数组的指针,Size
指示数组的大小。Buffer
在渲染模式为 ?GL_SELECT
时(参见 gl:renderMode/1
)从名称堆栈返回值(参见 gl:initNames/0
、gl:loadName/1
、gl:pushName/1
)。必须在启用选择模式之前发出 gl:selectBuffer/2
,并且在渲染模式为 ?GL_SELECT
时不得发出此命令。
gl:separableFilter2D/8
从两个像素数组构建一个二维可分离卷积滤波器内核。
GL 图元可以具有平面或平滑着色。平滑着色(默认值)会导致在栅格化图元时插值计算出的顶点颜色,通常为每个生成的像素片段分配不同的颜色。平面着色仅选择一个顶点的计算颜色并将其分配给通过栅格化单个图元生成的所有像素片段。在任一情况下,如果启用了光照,则顶点的计算颜色是光照的结果,或者如果禁用了光照,则它是指定顶点时的当前颜色。
gl:shaderBinary/3
将预编译的着色器二进制代码加载到 Shaders
中给出的 Count
着色器对象中。Binary
指向存储在客户端内存中的 Length
字节的二进制着色器代码。BinaryFormat
指定预编译代码的格式。
gl:shaderSource/2
将 Shader
中的源代码设置为由 String
指定的字符串数组中的源代码。先前存储在着色器对象中的任何源代码都将被完全替换。数组中的字符串数由 Count
指定。如果 Length
为 ?NULL
,则假定每个字符串都以 null 结尾。如果 Length
是 ?NULL
之外的值,则它指向一个数组,该数组包含 String
的每个对应元素的字符串长度。Length
数组中的每个元素可能包含相应字符串的长度(空字符不计为字符串长度的一部分),或者包含小于 0 的值以指示该字符串以 null 结尾。源代码字符串此时不进行扫描或解析;它们只是被复制到指定的着色器对象中。
gl:shaderStorageBlockBinding/3
更改程序对象 Program
中分配的索引为 StorageBlockIndex
的活动着色器存储块。StorageBlockIndex
必须是 Program
中的活动着色器存储块索引。StorageBlockBinding
必须小于 ?GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
的值。如果成功,gl:shaderStorageBlockBinding/3
将指定 Program
将使用绑定到绑定点 StorageBlockBinding
的缓冲区对象的数据存储来读取和写入由 StorageBlockIndex
标识的着色器存储块中的缓冲区变量的值。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。首先使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。您可以使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像,以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
gl:stencilMask/1
控制模板平面中各个位的写入。Mask
的最低有效 n 位(其中 n 是模板缓冲区中的位数)指定一个掩码。掩码中出现 1 的位置,可以写入模板缓冲区中的相应位。出现 0 的位置,相应的位将受到写保护。最初,所有位都启用了写入。
gl:stencilMaskSeparate/2
控制模板平面中各个位的写入。Mask
的最低有效位 n 指定一个掩码,其中 n 是模板缓冲区中的位数。掩码中出现 1 的位置,可以写入模板缓冲区中对应的位。出现 0 的位置,则对应的位受到写保护。最初,所有位都启用写入。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。您可以使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像,以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。您可以使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像,以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
gl:texCoord()
指定一维、二维、三维或四维的纹理坐标。 gl:texCoord1()
将当前纹理坐标设置为 (s 0 0 1);调用 gl:texCoord2()
将它们设置为 (s t 0 1)。类似地,gl:texCoord3()
将纹理坐标指定为 (s t r 1),而 gl:texCoord4()
明确定义所有四个分量为 (s t r q)。
gl:texCoordPointer/4
指定渲染时使用的纹理坐标数组的位置和数据格式。 Size
指定每个纹理坐标集中的坐标数量,必须为 1、2、3 或 4。 Type
指定每个纹理坐标的数据类型,而 Stride
指定从一个纹理坐标集到下一个纹理坐标集的字节跨度,允许将顶点和属性打包到单个数组中或存储在单独的数组中。(在某些实现中,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
纹理环境指定在对片段进行纹理处理时如何解释纹理值。当 Target
为 ?GL_TEXTURE_FILTER_CONTROL
时,Pname
必须为 ?GL_TEXTURE_LOD_BIAS
。当 Target
为 ?GL_TEXTURE_ENV
时,Pname
可以是 ?GL_TEXTURE_ENV_MODE
、?GL_TEXTURE_ENV_COLOR
、?GL_COMBINE_RGB
、?GL_COMBINE_ALPHA
、?GL_RGB_SCALE
、?GL_ALPHA_SCALE
、?GL_SRC0_RGB
、?GL_SRC1_RGB
、?GL_SRC2_RGB
、?GL_SRC0_ALPHA
、?GL_SRC1_ALPHA
或 ?GL_SRC2_ALPHA
。
gl:texGen()
选择纹理坐标生成函数或为一个函数提供系数。 Coord
命名一个纹理坐标(s
、t
、r
、q
);它必须是符号 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
之一。Pname
必须是三个符号常量之一:?GL_TEXTURE_GEN_MODE
、?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
。如果 Pname
是 ?GL_TEXTURE_GEN_MODE
,则 Params
选择一种模式,即 ?GL_OBJECT_LINEAR
、?GL_EYE_LINEAR
、?GL_SPHERE_MAP
、?GL_NORMAL_MAP
或 ?GL_REFLECTION_MAP
之一。如果 Pname
是 ?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
,则 Params
包含相应纹理生成函数的系数。
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。要启用和禁用一维纹理,请调用 gl:enable/1
和 gl:disable/1
,参数为 ?GL_TEXTURE_1D
。
纹理允许着色器读取图像数组的元素。
gl:texImage2DMultisample/6
建立多重采样纹理图像的数据存储、格式、尺寸和样本数量。
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。要启用和禁用三维纹理,请调用 gl:enable/1
和 gl:disable/1
,参数为 ?GL_TEXTURE_3D
。
gl:texImage3DMultisample/7
建立多重采样纹理图像的数据存储、格式、尺寸和样本数量。
gl:texParameter()
和 gl:textureParameter()
将 Params
中的值分配给指定为 Pname
的纹理参数。对于 gl:texParameter()
,Target
定义目标纹理,可以是 ?GL_TEXTURE_1D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
、?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
或 ?GL_TEXTURE_RECTANGLE
。Pname
中接受以下符号
gl:texStorage1D/4
和 gl:textureStorage1D()
同时指定一维纹理所有级别的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则所有级别的格式和尺寸都将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
gl:texStorage2D/5
和 gl:textureStorage2D()
同时指定二维纹理或一维纹理数组所有级别的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则所有级别的格式和尺寸都将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
gl:texStorage2DMultisample/6
和 gl:textureStorage2DMultisample()
指定二维多重采样纹理的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则其格式和尺寸将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
gl:texStorage3D/6
和 gl:textureStorage3D()
同时指定三维、二维数组或立方体贴图数组纹理所有级别的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则所有级别的格式和尺寸都将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
gl:texStorage3DMultisample/7
和 gl:textureStorage3DMultisample()
指定二维多重采样数组纹理的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则其格式和尺寸将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。要启用或禁用一维纹理,请调用 gl:enable/1
和 gl:disable/1
,参数为 ?GL_TEXTURE_1D
。
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。
当着色器阶段获取纹素并且相同的纹素通过片段着色器输出写入时,渲染片段的值是未定义的,即使读取和写入不在同一个绘图命令中也是如此。要通过后续绘图命令中的纹素获取安全地读取已写入的纹素的结果,请在两个绘图命令之间调用 gl:textureBarrier/0
,以保证在执行后续绘图命令之前已完成写入并且缓存已失效。
gl:texBuffer/3
和 gl:textureBuffer/3
将指定的缓冲区对象的数据存储附加到指定的纹理对象,并指定缓冲区对象中找到的纹理图像的存储格式。纹理对象必须是缓冲区纹理。
gl:texBufferRange/5
和 gl:textureBufferRange/5
将指定缓冲区对象的数据存储区的一个范围附加到指定的纹理对象,并指定缓冲区对象中纹理图像的存储格式。纹理对象必须是缓冲区纹理。
gl:textureView/8
将纹理对象初始化为另一个纹理对象的别名或视图,与初始化的纹理共享父纹理的部分或全部数据存储区。纹理
指定先前通过成功调用 gl:genTextures/1
保留但尚未绑定或给定目标的名称。目标
指定新初始化的纹理的目标,并且必须与父纹理的目标兼容,在 原始纹理
中给出,如下表所示
gl:transformFeedbackBufferBase/3
将缓冲区对象 缓冲区
绑定到变换反馈对象 Xfb
中索引为 索引
的绑定点。
gl:transformFeedbackBufferRange/5
将缓冲区对象 缓冲区
中由 偏移
和 大小
表示的范围绑定到变换反馈对象 Xfb
中索引为 索引
的绑定点。
使用 gl:transformFeedbackVaryings/3
指定要在变换反馈模式中记录的顶点或几何着色器输出的名称。当几何着色器处于活动状态时,变换反馈会记录从发射的顶点中选择的几何着色器输出变量的值。否则,将记录所选顶点着色器输出的值。
gl:translate()
产生 (x y z) 的平移。当前矩阵(参见 gl:matrixMode/1
)乘以这个平移矩阵,乘积替换当前矩阵,就像调用 gl:multMatrix()
时使用以下矩阵作为其参数一样
使用 gl:uniformBlockBinding/3
为活动的统一块分配绑定点。程序的每个活动统一块都有一个对应的统一缓冲区绑定点。程序
是程序对象的名称,该程序对象在过去已发出 gl:linkProgram/1
命令。
gl:uniform()
修改统一变量或统一变量数组的值。要修改的统一变量的位置由 位置
指定,它应该是 gl:getUniformLocation/2
返回的值。gl:uniform()
在通过调用 gl:useProgram/1
使其成为当前状态一部分的程序对象上运行。
gl:uniformSubroutines()
使用 索引
中的子程序索引加载当前程序着色器阶段 着色器类型
的所有活动子程序统一变量,将 索引[i]
存储到位置 I
的统一变量中。Count
必须等于当前正在使用着色器阶段 着色器类型
的程序 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
的值。此外,索引
中的所有值都必须小于着色器阶段的 ?GL_ACTIVE_SUBROUTINES
的值。
gl:useProgram/1
将由 程序
指定的程序对象安装为当前渲染状态的一部分。通过使用 gl:attachShader/2
将着色器对象成功附加到程序对象、使用 gl:compileShader/1
成功编译着色器对象以及使用 gl:linkProgram/1
成功链接程序对象,可以在程序对象中创建一个或多个可执行文件。
gl:useProgramStages/3
将程序对象中与指定着色器阶段集关联的可执行文件绑定到由 管道
给出的程序管道对象。管道
指定要绑定可执行文件的程序管道对象。阶段
包含指示在 程序
中要与程序管道对象 管道
一起使用的着色器阶段的位逻辑组合。阶段
必须是 ?GL_VERTEX_SHADER_BIT
、?GL_TESS_CONTROL_SHADER_BIT
、?GL_TESS_EVALUATION_SHADER_BIT
、?GL_GEOMETRY_SHADER_BIT
、?GL_FRAGMENT_SHADER_BIT
和 ?GL_COMPUTE_SHADER_BIT
的逻辑组合。此外,可以指定特殊值 ?GL_ALL_SHADER_BITS
,以指示应将 程序
中包含的所有可执行文件安装到 管道
中。
gl:validateProgram/1
检查 程序
中包含的可执行文件是否可以在当前 OpenGL 状态下执行。验证过程生成的信息将存储在 程序
的信息日志中。验证信息可能包含空字符串,也可能包含关于当前程序对象如何与当前 OpenGL 状态的其余部分交互的信息的字符串。这为 OpenGL 实现者提供了一种方法,可以传达有关当前程序效率低下、次优、无法执行等原因的更多信息。
gl:validateProgramPipeline/1
指示实现根据当前 GL 状态验证 管道
中包含的着色器可执行文件。实现可以使用它作为机会来执行任何内部着色器修改,这些修改可能是必需的,以确保在给定当前 GL 状态的情况下正确操作已安装的着色器。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
gl:vertex()
命令在 gl:'begin'/1
/gl:'end'/0
对中使用,以指定点、线和多边形顶点。调用 gl:vertex()
时,当前颜色、法线、纹理坐标和雾坐标与顶点关联。
gl:vertexArrayElementBuffer/2
将 ID 为 缓冲区
的缓冲区对象绑定到 ID 为 Vaobj
的顶点数组对象的元素数组缓冲区绑定点。如果 缓冲区
为零,则会删除 Vaobj
的任何现有元素数组缓冲区绑定。
gl:bindVertexBuffer/4
和 gl:vertexArrayVertexBuffer/5
将名为 缓冲区
的缓冲区绑定到顶点缓冲区绑定点,该绑定点的索引由 绑定索引
给出。gl:bindVertexBuffer/4
修改当前绑定的顶点数组对象的绑定,而 gl:vertexArrayVertexBuffer/5
允许调用者使用名为 Vaobj
的参数来指定顶点数组对象的 ID,应该修改该 ID 的绑定。偏移
和 步幅
分别指定缓冲区中第一个元素的偏移量以及缓冲区中元素之间的距离,并且都以基本机器单位度量。绑定索引
必须小于 ?GL_MAX_VERTEX_ATTRIB_BINDINGS
的值。偏移
和 步幅
必须大于或等于零。如果 缓冲区
为零,则取消绑定当前绑定到指定绑定点的任何缓冲区。
gl:bindVertexBuffers/4
和 gl:vertexArrayVertexBuffers/5
将现有缓冲区对象的数组中的存储绑定到顶点数组对象中指定数量的连续顶点缓冲区绑定点单元。对于 gl:bindVertexBuffers/4
,顶点数组对象是当前绑定的顶点数组对象。对于 gl:vertexArrayVertexBuffers/5
,Vaobj
是顶点数组对象的名称。
gl:vertexAttribBinding/2
和 gl:vertexArrayAttribBinding/3
建立顶点数组对象的通用顶点属性之间的关联,其索引由 Attribindex
给定,以及顶点缓冲区绑定,其索引由 Bindingindex
给定。对于 gl:vertexAttribBinding/2
,受影响的顶点数组对象是当前绑定的对象。对于 gl:vertexArrayAttribBinding/3
,Vaobj
是顶点数组对象的名称。
gl:vertexAttribDivisor/2
修改在单个绘制调用中渲染多个图元实例时,通用顶点属性前进的速率。如果 Divisor
为零,则槽 Index
处的属性每个顶点前进一次。如果 Divisor
为非零值,则该属性每渲染 Divisor
个顶点集实例前进一次。如果某个属性的 ?GL_VERTEX_ATTRIB_ARRAY_DIVISOR
值非零,则该属性称为实例化属性。
gl:vertexAttrib()
系列入口点允许应用程序在编号位置传递通用顶点属性。
gl:vertexAttribFormat/5
、 gl:vertexAttribIFormat/4
和 gl:vertexAttribLFormat/4
,以及 gl:vertexArrayAttribFormat/6
、 gl:vertexArrayAttribIFormat/5
和 gl:vertexArrayAttribLFormat/5
指定顶点数组中数据的组织方式。前三个调用操作绑定顶点数组对象,而后三个调用修改 ID 为 Vaobj
的顶点数组对象的状态。Attribindex
指定正在描述其数据布局的通用顶点属性数组的索引,并且必须小于 ?GL_MAX_VERTEX_ATTRIBS
的值。
gl:vertexAttribPointer/6
、gl:vertexAttribIPointer/5
和 gl:vertexAttribLPointer/5
指定在渲染时使用的索引 Index
处的通用顶点属性数组的位置和数据格式。Size
指定每个属性的组件数量,并且必须为 1、2、3、4 或 ?GL_BGRA
。Type
指定每个组件的数据类型,并且 Stride
指定从一个属性到下一个属性的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。
gl:vertexBindingDivisor/2
和 gl:vertexArrayBindingDivisor/3
修改在单个绘制命令中渲染多个图元实例时,通用顶点属性前进的速率。如果 Divisor
为零,则使用绑定到 Bindingindex
的缓冲区的属性每个顶点前进一次。如果 Divisor
为非零值,则该属性每渲染 Divisor
个顶点集实例前进一次。如果相应的 Divisor
值非零,则属性称为 instanced
。
gl:vertexPointer/4
指定在渲染时使用的顶点坐标数组的位置和数据格式。Size
指定每个顶点的坐标数,并且必须为 2、3 或 4。Type
指定每个坐标的数据类型,并且 Stride
指定从一个顶点到下一个顶点的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。(在某些实现上,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
gl:viewport/4
指定从归一化设备坐标到窗口坐标的 x 和 y 的仿射变换。令 (x nd y nd) 为归一化设备坐标。然后,窗口坐标 (x w y w) 的计算方式如下
gl:viewportArrayv/2
同时指定多个视口的参数。First
指定要修改的第一个视口的索引,并且 Count
指定要修改的视口数量。First
必须小于 ?GL_MAX_VIEWPORTS
的值,并且 First
+ Count
必须小于或等于 ?GL_MAX_VIEWPORTS
的值。索引位于 [First
, First
+ Count
) 范围之外的视口不会被修改。V
包含浮点值数组的地址,该数组指定每个视口的左 (x)、底 (y)、宽度 (w) 和高度 (h),按该顺序排列。x 和 y 给出视口左下角的位置,并且 w 和 h 分别给出视口的宽度和高度。视口指定从归一化设备坐标到窗口坐标的 x 和 y 的仿射变换。令 (x nd y nd) 为归一化设备坐标。然后,窗口坐标 (x w y w) 的计算方式如下
gl:viewportIndexedf/5
和 gl:viewportIndexedfv/2
指定单个视口的参数。Index
指定要修改的视口的索引。Index
必须小于 ?GL_MAX_VIEWPORTS
的值。对于 gl:viewportIndexedf/5
,X
、Y
、W
和 H
分别以像素为单位指定视口的左、底、宽度和高度。对于 gl:viewportIndexedfv/2
,V
包含一个浮点值数组的地址,该数组指定每个视口的左 (x)、底 (y)、宽度 (w) 和高度 (h),按该顺序排列。x 和 y 给出视口左下角的位置,并且 w 和 h 分别给出视口的宽度和高度。视口指定从归一化设备坐标到窗口坐标的 x 和 y 的仿射变换。令 (x nd y nd) 为归一化设备坐标。然后,窗口坐标 (x w y w) 的计算方式如下
gl:waitSync/3
使 GL 服务器阻塞并等待直到 Sync
变为已发出信号。Sync
是要等待的现有同步对象的名称。Flags
和 Timeout
当前未使用,必须分别设置为零和特殊值 ?GL_TIMEOUT_IGNORED
GL 在窗口坐标中维护一个 3D 位置。此位置称为光栅位置,用于定位像素和位图写入操作。它以亚像素精度维护。请参阅 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。
类型
-type clamp() :: float().
-type enum() :: non_neg_integer().
-type f() :: float().
-type i() :: integer().
-type offset() :: non_neg_integer().
函数
累积缓冲区是一个扩展范围的颜色缓冲区。图像不会渲染到其中。相反,渲染到其中一个颜色缓冲区的图像会在渲染后添加到累积缓冲区的内容中。通过累积使用不同变换矩阵生成的图像,可以创建诸如抗锯齿(点、线和多边形)、运动模糊和景深等效果。
gl:activeShaderProgram/2
将由 Program
命名的链接程序设置为程序管线对象 Pipeline
的活动程序。活动程序管线对象中的活动程序是调用 gl:uniform()
的目标,当没有通过调用 gl:useProgram/1
使任何程序成为当前程序时。
-spec activeTexture(Texture :: enum()) -> ok.
gl:activeTexture/1
选择后续纹理状态调用将影响哪个纹理单元。实现支持的纹理单元数量取决于实现,但必须至少为 80 个。
alpha 测试根据传入片段的 alpha 值与常量参考值之间的比较结果丢弃片段。gl:alphaFunc/2
指定参考值和比较函数。仅当启用 alpha 测试时才执行比较。默认情况下,它未启用。(请参阅 gl:enable/1
和 gl:disable/1
of ?GL_ALPHA_TEST
。)
-spec areTexturesResident(Textures :: [i()]) -> {0 | 1, Residences :: [0 | 1]}.
GL 建立了一个“工作集”的纹理,这些纹理驻留在纹理内存中。这些纹理可以比未驻留的纹理更有效地绑定到纹理目标。
-spec arrayElement(I :: i()) -> ok.
gl:arrayElement/1
命令在 gl:'begin'/1
/gl:'end'/0
对中使用,以指定点、线和多边形图元的顶点和属性数据。如果在调用 gl:arrayElement/1
时启用了 ?GL_VERTEX_ARRAY
,则会绘制一个顶点,使用从启用的数组的位置 I
中获取的顶点和属性数据。如果未启用 ?GL_VERTEX_ARRAY
,则不会发生绘制,但会修改与启用的数组对应的属性。
为了创建完整的着色器程序,必须有一种方法来指定将链接在一起的事物列表。程序对象提供了这种机制。要链接到程序对象中的着色器必须首先附加到该程序对象。gl:attachShader/2
将 Shader
指定的着色器对象附加到 Program
指定的程序对象。这表明 Shader
将包含在将对 Program
执行的链接操作中。
-spec 'begin'(Mode :: enum()) -> ok.
等效于 '\'end\''/0
。
等效于 endQuery/1
。
等效于 endQueryIndexed/2
。
-spec beginTransformFeedback(PrimitiveMode :: enum()) -> ok.
gl:bindAttribLocation/3
用于将 Program
指定的程序对象中的用户定义属性变量与通用顶点属性索引关联。用户定义属性变量的名称作为以空字符结尾的字符串在 Name
中传递。要绑定到此变量的通用顶点属性索引由 Index
指定。当 Program
成为当前状态的一部分时,通过通用顶点属性 Index
提供的值将修改 Name
指定的用户定义属性变量的值。
gl:bindBuffer/2
将缓冲区对象绑定到指定的缓冲区绑定点。调用 gl:bindBuffer/2
,其中 Target
设置为接受的符号常量之一,Buffer
设置为缓冲区对象的名称,将该缓冲区对象名称绑定到目标。如果不存在名称为 Buffer
的缓冲区对象,则会创建一个具有该名称的对象。当缓冲区对象绑定到目标时,该目标的先前绑定会自动中断。
gl:bindBufferBase/3
将缓冲区对象 Buffer
绑定到由 Target
指定的目标数组的索引 Index
处的绑定点。每个 Target
表示缓冲区绑定点的索引数组,以及可由其他缓冲区操作函数(如 gl:bindBuffer/2
或 glMapBuffer
)使用的单个通用绑定点。除了将 Buffer
绑定到索引缓冲区绑定目标之外,gl:bindBufferBase/3
还将 Buffer
绑定到 Target
指定的通用缓冲区绑定点。
-spec bindBufferRange(Target :: enum(), Index :: i(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
gl:bindBufferRange/5
将由 Offset
和 Size
表示的缓冲区对象 Buffer
的范围绑定到由 Target
指定的目标数组的索引 Index
处的绑定点。每个 Target
表示缓冲区绑定点的索引数组,以及可由其他缓冲区操作函数(如 gl:bindBuffer/2
或 glMapBuffer
)使用的单个通用绑定点。除了将 Buffer
的范围绑定到索引缓冲区绑定目标之外,gl:bindBufferRange/5
还将该范围绑定到 Target
指定的通用缓冲区绑定点。
gl:bindBuffersBase/3
将一组 Count
缓冲区对象(其名称在数组 Buffers
中给出)绑定到从由 Target
指定的目标数组的索引 First
开始的 Count
个连续绑定点。如果 Buffers
为 ?NULL
,则 gl:bindBuffersBase/3
会取消绑定当前绑定到引用绑定点的任何缓冲区。假设没有生成错误,它等效于以下伪代码,该伪代码调用 gl:bindBufferBase/3
,但 gl:bindBuffersBase/3
不会更改非索引 Target
。
-spec bindBuffersRange(Target :: enum(), First :: i(), Buffers :: [i()], Offsets :: [i()], Sizes :: [i()]) -> ok.
gl:bindBuffersRange/5
将一组 Count
范围从缓冲区对象(其名称在数组 Buffers
中给出)绑定到从由 Target
指定的目标数组的索引 First
开始的 Count
个连续绑定点。Offsets
指定包含缓冲区中 Count
个起始偏移量的数组的地址,而 Sizes
指定 Count
个范围大小的数组的地址。如果 Buffers
为 ?NULL
,则会忽略 Offsets
和 Sizes
,并且 gl:bindBuffersRange/5
会取消绑定当前绑定到引用绑定点的任何缓冲区。假设没有生成错误,它等效于以下伪代码,该伪代码调用 gl:bindBufferRange/5
,但 gl:bindBuffersRange/5
不会更改非索引 Target
。
gl:bindFragDataLocation/3
显式指定程序 Program
的用户定义可变输出变量 Name
到片段着色器颜色编号 ColorNumber
的绑定。如果之前绑定了 Name
,则其指定的绑定将替换为 ColorNumber
。Name
必须是以空字符结尾的字符串。ColorNumber
必须小于 ?GL_MAX_DRAW_BUFFERS
。
-spec bindFragDataLocationIndexed(Program :: i(), ColorNumber :: i(), Index :: i(), Name :: string()) -> ok.
gl:bindFragDataLocationIndexed/4
指定当下次链接程序时,Program
中的可变输出变量 Name
应绑定到片段颜色 ColorNumber
。Index
可以是零或一,以指定颜色分别用作混合方程式的第一个或第二个颜色输入。
gl:bindFramebuffer/2
将名为 Framebuffer
的帧缓冲对象绑定到 Target
指定的帧缓冲目标。Target
必须是 ?GL_DRAW_FRAMEBUFFER
、?GL_READ_FRAMEBUFFER
或 ?GL_FRAMEBUFFER
。如果帧缓冲对象绑定到 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
,它将分别成为渲染或回读操作的目标,直到它被删除或另一个帧缓冲绑定到相应的绑定点。使用设置为 ?GL_FRAMEBUFFER
的 Target
调用 gl:bindFramebuffer/2
会将 Framebuffer
绑定到读取和绘制帧缓冲目标。Framebuffer
是先前调用 gl:genFramebuffers/1
返回的帧缓冲对象的名称,或者为零以断开帧缓冲对象与 Target
的现有绑定。
-spec bindImageTexture(Unit, Texture, Level, Layered, Layer, Access, Format) -> ok when Unit :: i(), Texture :: i(), Level :: i(), Layered :: 0 | 1, Layer :: i(), Access :: enum(), Format :: enum().
gl:bindImageTexture/7
将纹理的单个层级绑定到图像单元,以便从着色器中读取和写入它。Unit
指定要将纹理层级绑定到的图像单元的从零开始的索引。Texture
指定要绑定到图像单元的现有纹理对象的名称。如果 Texture
为零,则断开与图像单元的任何现有绑定。Level
指定要绑定到图像单元的纹理的层级。
gl:bindImageTextures/2
将来自现有纹理对象数组的图像绑定到指定数量的连续图像单元。Count
指定存储在数组 Textures
中的纹理对象名称的数量。从数组中读取该数量的纹理名称,并将其绑定到从 First
开始的 Count
个连续纹理单元。如果名称零出现在 Textures
数组中,则重置与图像单元的任何现有绑定。 Textures
中的任何非零条目都必须是现有纹理对象的名称。当 Textures
中存在非零条目时,会绑定零级的图像,绑定被认为是分层的,第一层设置为零,并且图像绑定用于读写访问。图像单元格式参数取自纹理对象零级图像的内部格式。对于立方体贴图纹理,使用零级正 X 图像的内部格式。如果 Textures
为 ?NULL
,则相当于指定了一个仅包含零的适当大小的数组。
-spec bindProgramPipeline(Pipeline :: i()) -> ok.
gl:bindProgramPipeline/1
将程序管道对象绑定到当前上下文。Pipeline
必须是先前调用 gl:genProgramPipelines/1
返回的名称。如果不存在名为 Pipeline
的程序管道,则会创建一个具有该名称并初始化为默认状态向量的新管道对象。
gl:bindRenderbuffer/2
将名为 Renderbuffer
的渲染缓冲对象绑定到 Target
指定的渲染缓冲目标。Target
必须是 ?GL_RENDERBUFFER
。Renderbuffer
是先前调用 gl:genRenderbuffers/1
返回的渲染缓冲对象的名称,或者为零以断开渲染缓冲对象与 Target
的现有绑定。
gl:bindSampler/2
将 Sampler
绑定到索引为 Unit
的纹理单元。Sampler
必须为零,或者先前调用 gl:genSamplers/1
返回的采样器对象的名称。Unit
必须小于 ?GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
的值。
gl:bindSamplers/2
将来自现有采样器对象数组的采样器绑定到指定数量的连续采样器单元。Count
指定存储在数组 Samplers
中的采样器对象名称的数量。从数组中读取该数量的采样器名称,并将其绑定到从 First
开始的 Count
个连续采样器单元。
gl:bindTexture/2
允许您创建或使用命名纹理。使用设置为 ?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_BUFFER
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
的 Target
以及设置为新纹理名称的 Texture
调用 gl:bindTexture/2
会将纹理名称绑定到目标。当纹理绑定到目标时,该目标之前的绑定会自动断开。
gl:bindTextures/2
将现有纹理对象数组绑定到指定数量的连续纹理单元。Count
指定存储在数组 Textures
中的纹理对象名称的数量。从数组中读取该数量的纹理名称,并将其绑定到从 First
开始的 Count
个连续纹理单元。纹理的目标或类型是从纹理对象推断出来的,每个纹理都绑定到纹理单元的相应目标。如果名称零出现在 Textures
数组中,则重置纹理单元任何目标的任何现有绑定,并且将该目标的默认纹理绑定到位。 Textures
中的任何非零条目都必须是现有纹理对象的名称。如果 Textures
为 ?NULL
,则相当于指定了一个仅包含零的适当大小的数组。
gl:bindTextureUnit/2
将现有纹理对象绑定到编号为 Unit
的纹理单元。
gl:bindTransformFeedback/2
将名为 Id
的变换反馈对象绑定到当前 GL 状态。Id
必须是先前调用 gl:genTransformFeedbacks/1
返回的名称。如果 Id
之前未绑定过,则会创建一个具有名称 Id
并使用默认变换状态向量初始化的新变换反馈对象。
-spec bindVertexArray(Array :: i()) -> ok.
gl:bindVertexArray/1
绑定名为 Array
的顶点数组对象。Array
是先前调用 gl:genVertexArrays/1
返回的顶点数组对象的名称,或者为零以断开现有的顶点数组对象绑定。
-spec bitmap(Width, Height, Xorig, Yorig, Xmove, Ymove, Bitmap) -> ok when Width :: i(), Height :: i(), Xorig :: f(), Yorig :: f(), Xmove :: f(), Ymove :: f(), Bitmap :: offset() | mem().
位图是二进制图像。绘制时,位图相对于当前光栅位置定位,并且使用当前光栅颜色或索引写入与位图中的 1 对应的帧缓冲区像素。不修改与位图中 0 对应的帧缓冲区像素。
?GL_BLEND_COLOR
可用于计算源和目标混合因子。颜色分量在存储之前被限制在 [0 1] 范围内。有关混合操作的完整描述,请参阅 gl:blendFunc/2
。初始时,?GL_BLEND_COLOR
设置为 (0, 0, 0, 0)。
-spec blendEquation(Mode :: enum()) -> ok.
等效于 blendEquationi/2
。
混合方程确定如何将新像素(“源”颜色)与帧缓冲区中已有的像素(“目标”颜色)组合。此函数将 RGB 混合方程和 alpha 混合方程都设置为单个方程。gl:blendEquationi/2
指定单个绘制缓冲区的混合方程,而 gl:blendEquation/1
设置所有绘制缓冲区的混合方程。
混合方程确定如何将新像素(“源”颜色)与帧缓冲区中已有的像素(“目标”颜色)组合。这些函数为 RGB 颜色分量指定一个混合方程,为 alpha 分量指定一个混合方程。gl:blendEquationSeparatei/3
指定单个绘制缓冲区的混合方程,而 gl:blendEquationSeparate/2
设置所有绘制缓冲区的混合方程。
等效于 blendFunci/3
。
可以使用将传入(源)RGBA 值与帧缓冲区中已有的 RGBA 值(目标值)混合的函数来绘制像素。混合最初是禁用的。使用参数为 ?GL_BLEND
的 gl:enable/1
和 gl:disable/1
来启用和禁用混合。
-spec blendFuncSeparate(SfactorRGB, DfactorRGB, SfactorAlpha, DfactorAlpha) -> ok when SfactorRGB :: enum(), DfactorRGB :: enum(), SfactorAlpha :: enum(), DfactorAlpha :: enum().
等效于 blendFuncSeparatei/5
。
-spec blendFuncSeparatei(Buf :: i(), SrcRGB :: enum(), DstRGB :: enum(), SrcAlpha :: enum(), DstAlpha :: enum()) -> ok.
可以使用将传入(源)RGBA 值与帧缓冲区中已有的 RGBA 值(目标值)混合的函数来绘制像素。混合最初是禁用的。使用参数为 ?GL_BLEND
的 gl:enable/1
和 gl:disable/1
来启用和禁用混合。
-spec blitFramebuffer(SrcX0, SrcY0, SrcX1, SrcY1, DstX0, DstY0, DstX1, DstY1, Mask, Filter) -> ok when SrcX0 :: i(), SrcY0 :: i(), SrcX1 :: i(), SrcY1 :: i(), DstX0 :: i(), DstY0 :: i(), DstX1 :: i(), DstY1 :: i(), Mask :: i(), Filter :: enum().
gl:blitFramebuffer/10
和 glBlitNamedFramebuffer
将像素值的矩形区域从读取帧缓冲区的某个区域传输到绘制帧缓冲区的另一个区域。
gl:bufferData/4
和 glNamedBufferData
为缓冲区对象创建一个新的数据存储。 对于 gl:bufferData/4
,将使用当前绑定到 Target
的缓冲区对象。对于 glNamedBufferData
,将使用调用方在 Buffer
中指定的 ID 关联的缓冲区对象。
gl:bufferStorage/4
和 glNamedBufferStorage
创建一个新的不可变数据存储。 对于 gl:bufferStorage/4
,将初始化当前绑定到 Target
的缓冲区对象。 对于 glNamedBufferStorage
,Buffer
是将被配置的缓冲区对象的名称。 数据存储的大小由 Size
指定。 如果有初始数据可用,则可以在 Data
中提供其地址。 否则,要创建未初始化的数据存储,Data
应为 ?NULL
。
gl:bufferSubData/4
和 glNamedBufferSubData
重新定义指定缓冲区对象的部分或全部数据存储。从 Data
指向的内存中,将起始于字节偏移量 Offset
并延伸 Size
字节的数据复制到数据存储中。Offset
和 Size
必须定义一个完全位于缓冲区对象数据存储内的范围。
-spec callList(List :: i()) -> ok.
gl:callList/1
导致执行指定名称的显示列表。 显示列表中保存的命令将按顺序执行,就像它们在没有使用显示列表的情况下被调用一样。 如果 List
没有被定义为显示列表,则 gl:callList/1
将被忽略。
-spec callLists(Lists :: [i()]) -> ok.
gl:callLists/1
导致执行作为 Lists
传递的名称列表中每个显示列表。 因此,每个显示列表中保存的命令将按顺序执行,就像它们在没有使用显示列表的情况下被调用一样。 未定义的显示列表的名称将被忽略。
gl:checkFramebufferStatus/1
和 glCheckNamedFramebufferStatus
返回帧缓冲区对象作为读取或绘制帧缓冲区时的完整性状态,具体取决于 Target
的值。
gl:clampColor/2
控制在 gl:readPixels/7
期间执行的颜色钳制。Target
必须是 ?GL_CLAMP_READ_COLOR
。如果 Clamp
是 ?GL_TRUE
,则启用读取颜色钳制; 如果 Clamp
是 ?GL_FALSE
,则禁用读取颜色钳制。如果 Clamp
是 ?GL_FIXED_ONLY
,则仅当选定的读取缓冲区具有定点分量时才启用读取颜色钳制,否则禁用。
-spec clear(Mask :: i()) -> ok.
gl:clear/1
将窗口的位平面区域设置为先前由 gl:clearColor/4
、gl:clearDepth/1
和 gl:clearStencil/1
选择的值。 通过使用 gl:drawBuffer/1
一次选择多个缓冲区,可以同时清除多个颜色缓冲区。
gl:clearAccum/4
指定 gl:clear/1
用于清除累积缓冲区的红色、绿色、蓝色和 alpha 值。
-spec clearBufferData(Target, Internalformat, Format, Type, Data) -> ok when Target :: enum(), Internalformat :: enum(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
等效于 clearBufferuiv/3
。
等效于 clearBufferuiv/3
。
等效于 clearBufferuiv/3
。
等效于 clearBufferuiv/3
。
-spec clearBufferSubData(Target, Internalformat, Offset, Size, Format, Type, Data) -> ok when Target :: enum(), Internalformat :: enum(), Offset :: i(), Size :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
等效于 clearBufferuiv/3
。
这些命令将帧缓冲区的指定缓冲区清除为指定的值。 对于 gl:clearBuffer*()
,帧缓冲区是当前绑定的绘制帧缓冲区对象。 对于 glClearNamedFramebuffer*
,Framebuffer
为零,表示默认的绘制帧缓冲区,或者是帧缓冲区对象的名称。
gl:clearColor/4
指定 gl:clear/1
用于清除颜色缓冲区的红色、绿色、蓝色和 alpha 值。 由 gl:clearColor/4
指定的值将被钳制到范围 [0 1]。
-spec clearDepth(Depth :: clamp()) -> ok.
等效于 clearDepthf/1
。
-spec clearDepthf(D :: f()) -> ok.
gl:clearDepth/1
指定 gl:clear/1
用于清除深度缓冲区的深度值。 由 gl:clearDepth/1
指定的值将被钳制到范围 [0 1]。
-spec clearIndex(C :: f()) -> ok.
gl:clearIndex/1
指定 gl:clear/1
用于清除颜色索引缓冲区的索引。 C
不会被钳制。相反,C
被转换为一个具有未指定精度的定点值,精度位于二进制点的右侧。然后,这个值的整数部分将与 2 m-1 进行掩码,其中 m 是帧缓冲区中存储的颜色索引的位数。
-spec clearStencil(S :: i()) -> ok.
gl:clearStencil/1
指定 gl:clear/1
用于清除模板缓冲区的索引。 S
将与 2 m-1 进行掩码,其中 m 是模板缓冲区的位数。
-spec clearTexImage(Texture :: i(), Level :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem()) -> ok.
gl:clearTexImage/5
使用应用程序提供的值填充纹理中包含的所有图像。 Texture
必须是现有纹理的名称。 此外,Texture
不能是缓冲区纹理的名称,也不能是其内部格式被压缩的纹理。
clearTexSubImage(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, Type, Data)
查看源代码-spec clearTexSubImage(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, Type, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
gl:clearTexSubImage/11
使用应用程序提供的值填充纹理中包含的图像的全部或部分。 Texture
必须是现有纹理的名称。 此外,Texture
不能是缓冲区纹理的名称,也不能是其内部格式被压缩的纹理。
-spec clientActiveTexture(Texture :: enum()) -> ok.
gl:clientActiveTexture/1
选择要由 gl:texCoordPointer/4
修改的顶点数组客户端状态参数,并在使用 ?GL_TEXTURE_COORD_ARRAY
参数调用时,分别使用 gl:enableClientState/1
或 gl:disableClientState/1
启用或禁用这些参数。
gl:clientWaitSync/3
导致客户端阻塞并等待由 Sync
指定的同步对象变为已发出信号。 如果在调用 gl:clientWaitSync/3
时 Sync
已发出信号,则 gl:clientWaitSync/3
立即返回,否则它将阻塞并等待最多 Timeout
纳秒,直到 Sync
变为已发出信号。
gl:clipControl/2
控制裁剪体行为和裁剪坐标到窗口坐标的转换行为。
几何图形始终根据 x
、y
和 z
中的六个平面视锥的边界进行裁剪。 gl:clipPlane/2
允许指定额外的平面,这些平面不一定垂直于 x
、y
或 z
轴,所有几何图形都将根据这些平面进行裁剪。 要确定其他裁剪平面的最大数量,请使用参数 ?GL_MAX_CLIP_PLANES
调用 gl:getIntegerv/1
。所有实现至少支持六个这样的裁剪平面。由于生成的裁剪区域是定义的半空间的交集,因此它始终是凸的。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
等效于 color4usv/1
。
GL 存储当前单值颜色索引和当前四值 RGBA 颜色。 gl:color()
设置新的四值 RGBA 颜色。 gl:color()
有两个主要变体: gl:color3()
和 gl:color4()
。 gl:color3()
变体显式指定新的红色、绿色和蓝色值,并将当前 alpha 值隐式设置为 1.0 (全强度)。 gl:color4()
变体显式指定所有四个颜色分量。
-spec colorMask(Red :: 0 | 1, Green :: 0 | 1, Blue :: 0 | 1, Alpha :: 0 | 1) -> ok.
等效于 colorMaski/5
。
-spec colorMaski(Index :: i(), R :: 0 | 1, G :: 0 | 1, B :: 0 | 1, A :: 0 | 1) -> ok.
gl:colorMask/4
和 gl:colorMaski/5
指定帧缓冲区中各个颜色分量是否可以写入。 gl:colorMaski/5
为特定的绘制缓冲区设置掩码,而 gl:colorMask/4
为所有绘制缓冲区设置掩码。 例如,如果 Red
为 ?GL_FALSE
,则无论尝试执行什么绘图操作,都不会更改任何颜色缓冲区中任何像素的红色分量。
gl:colorMaterial/2
指定哪些材质参数跟踪当前颜色。 当启用 ?GL_COLOR_MATERIAL
时,由 Mode
指定的材质参数或多个参数,以及由 Face
指定的材质或多个材质,始终跟踪当前颜色。
gl:colorPointer/4
指定渲染时使用的颜色分量数组的位置和数据格式。 Size
指定每个颜色的分量数量,必须为 3 或 4。 Type
指定每个颜色分量的数据类型,Stride
指定从一个颜色到下一个颜色的字节步幅,允许将顶点和属性打包到单个数组或存储在单独的数组中。(在某些实现中,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
-spec colorSubTable(Target, Start, Count, Format, Type, Data) -> ok when Target :: enum(), Start :: i(), Count :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
gl:colorSubTable/6
用于重新指定先前使用 gl:colorTable/6
定义的颜色表的连续部分。 由 Data
引用的像素将替换现有表中从索引 Start
到 start+count-1(包括)的部分。 此区域不得包含最初指定颜色表范围之外的任何条目。 指定宽度为 0 的子纹理不是错误,但这样的指定无效。
-spec colorTable(Target, Internalformat, Width, Format, Type, Table) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Format :: enum(), Type :: enum(), Table :: offset() | mem().
gl:colorTable/6
可以通过两种方式使用:测试给定一组参数的查找表的实际大小和颜色分辨率,或者加载颜色查找表的内容。 对于第一种情况,使用目标 ?GL_PROXY_*
,对于第二种情况,使用其他目标。
-spec colorTableParameteriv(Target :: enum(), Pname :: enum(), Params :: {i(), i(), i(), i()}) -> ok.
gl:colorTableParameter()
用于指定将颜色分量加载到颜色表时应用的比例因子和偏差项。 Target
指示比例和偏差项应用于哪个颜色表;它必须设置为 ?GL_COLOR_TABLE
、?GL_POST_CONVOLUTION_COLOR_TABLE
或 ?GL_POST_COLOR_MATRIX_COLOR_TABLE
。
-spec compileShader(Shader :: i()) -> ok.
gl:compileShader/1
编译存储在由 Shader
指定的着色器对象中的源代码字符串。
-spec compressedTexImage1D(Target, Level, Internalformat, Width, Border, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), Width :: i(), Border :: i(), ImageSize :: i(), Data :: offset() | mem().
纹理允许着色器读取图像数组的元素。
compressedTexImage2D(Target, Level, Internalformat, Width, Height, Border, ImageSize, Data)
查看源代码-spec compressedTexImage2D(Target, Level, Internalformat, Width, Height, Border, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Border :: i(), ImageSize :: i(), Data :: offset() | mem().
纹理允许着色器读取图像数组的元素。
compressedTexImage3D(Target, Level, Internalformat, Width, Height, Depth, Border, ImageSize, Data)
查看源代码-spec compressedTexImage3D(Target, Level, Internalformat, Width, Height, Depth, Border, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i(), Border :: i(), ImageSize :: i(), Data :: offset() | mem().
纹理允许着色器读取图像数组的元素。
compressedTexSubImage2D(Target, Level, Xoffset, Yoffset, Width, Height, Format, ImageSize, Data)
查看源代码compressedTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data)
查看源代码-spec compressedTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
-spec compressedTextureSubImage1D(Texture, Level, Xoffset, Width, Format, ImageSize, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Width :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
纹理允许着色器读取图像数组的元素。
compressedTextureSubImage2D(Texture, Level, Xoffset, Yoffset, Width, Height, Format, ImageSize, Data)
查看源代码-spec compressedTextureSubImage2D(Texture, Level, Xoffset, Yoffset, Width, Height, Format, ImageSize, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Width :: i(), Height :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
纹理允许着色器读取图像数组的元素。
compressedTextureSubImage3D(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data)
查看源代码-spec compressedTextureSubImage3D(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
纹理允许着色器读取图像数组的元素。
-spec convolutionFilter1D(Target, Internalformat, Width, Format, Type, Image) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Format :: enum(), Type :: enum(), Image :: offset() | mem().
gl:convolutionFilter1D/6
从像素数组构建一维卷积滤波内核。
-spec convolutionFilter2D(Target, Internalformat, Width, Height, Format, Type, Image) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Image :: offset() | mem().
gl:convolutionFilter2D/7
从像素数组构建二维卷积滤波内核。
gl:convolutionParameter()
设置卷积参数的值。
-spec copyBufferSubData(ReadTarget, WriteTarget, ReadOffset, WriteOffset, Size) -> ok when ReadTarget :: enum(), WriteTarget :: enum(), ReadOffset :: i(), WriteOffset :: i(), Size :: i().
gl:copyBufferSubData/5
和 glCopyNamedBufferSubData
将附加到源缓冲区对象的数据存储的一部分复制到附加到目标缓冲区对象的数据存储。 由 Size
指示的基本机器单元数量从源的偏移量 ReadOffset
复制到目标的偏移量 WriteOffset
。 ReadOffset
、WriteOffset
和 Size
以基本机器单元为单位。
gl:copyColorSubTable/5
用于重新指定先前使用 gl:colorTable/6
定义的颜色表的连续部分。 从帧缓冲区复制的像素将替换现有表中从索引 Start
到 start+x-1(包括)的部分。 此区域不得包含最初指定颜色表范围之外的任何条目。 指定宽度为 0 的子纹理不是错误,但这样的指定无效。
-spec copyColorTable(Target :: enum(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i()) -> ok.
gl:copyColorTable/5
从当前的 ?GL_READ_BUFFER
加载颜色表(而不是像 gl:colorTable/6
那样从主内存加载)。
-spec copyConvolutionFilter1D(Target :: enum(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i()) -> ok.
gl:copyConvolutionFilter1D/5
使用来自当前 ?GL_READ_BUFFER
的像素定义一维卷积滤波内核(而不是像 gl:convolutionFilter1D/6
那样从主内存定义)。
-spec copyConvolutionFilter2D(Target :: enum(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i(), Height :: i()) -> ok.
gl:copyConvolutionFilter2D/6
使用来自当前 ?GL_READ_BUFFER
的像素定义二维卷积滤波内核(而不是像 gl:convolutionFilter2D/7
那样从主内存定义)。
copyImageSubData(SrcName, SrcTarget, SrcLevel, SrcX, SrcY, SrcZ, DstName, DstTarget, DstLevel, DstX, DstY, DstZ, SrcWidth, SrcHeight, SrcDepth)
查看源代码-spec copyImageSubData(SrcName, SrcTarget, SrcLevel, SrcX, SrcY, SrcZ, DstName, DstTarget, DstLevel, DstX, DstY, DstZ, SrcWidth, SrcHeight, SrcDepth) -> ok when SrcName :: i(), SrcTarget :: enum(), SrcLevel :: i(), SrcX :: i(), SrcY :: i(), SrcZ :: i(), DstName :: i(), DstTarget :: enum(), DstLevel :: i(), DstX :: i(), DstY :: i(), DstZ :: i(), SrcWidth :: i(), SrcHeight :: i(), SrcDepth :: i().
gl:copyImageSubData/15
可用于将数据从一个图像(即纹理或渲染缓冲区)复制到另一个图像。 gl:copyImageSubData/15
不执行通用转换,例如缩放、调整大小、混合、色彩空间或格式转换。 应将其视为以类似于 CPU memcpy 的方式运行。 CopyImageSubData 可以在具有不同内部格式的图像之间复制,前提是格式兼容。
gl:copyPixels/5
将与屏幕对齐的像素矩形从指定的帧缓冲区位置复制到相对于当前光栅位置的区域。 只有当整个像素源区域都在窗口的暴露部分内时,其操作才是明确定义的。 从窗口外部或从窗口中未暴露的区域复制的结果取决于硬件并且是未定义的。
-spec copyTexImage1D(Target, Level, Internalformat, X, Y, Width, Border) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i(), Border :: i().
gl:copyTexImage1D/7
使用来自当前 ?GL_READ_BUFFER
的像素定义一维纹理图像。
-spec copyTexImage2D(Target, Level, Internalformat, X, Y, Width, Height, Border) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i(), Height :: i(), Border :: i().
gl:copyTexImage2D/8
使用来自当前 ?GL_READ_BUFFER
的像素定义二维纹理图像或立方体贴图纹理图像。
-spec copyTexSubImage1D(Target :: enum(), Level :: i(), Xoffset :: i(), X :: i(), Y :: i(), Width :: i()) -> ok.
gl:copyTexSubImage1D/6
和 glCopyTextureSubImage1D
使用来自当前 ?GL_READ_BUFFER
的像素替换一维纹理图像的一部分(而不是像 gl:texSubImage1D/7
那样从主内存替换)。 对于 gl:copyTexSubImage1D/6
,将使用绑定到 Target
的纹理对象进行处理。 对于 glCopyTextureSubImage1D
,Texture
指示应将哪个纹理对象用于调用目的。
-spec copyTexSubImage2D(Target, Level, Xoffset, Yoffset, X, Y, Width, Height) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), X :: i(), Y :: i(), Width :: i(), Height :: i().
gl:copyTexSubImage2D/8
和 glCopyTextureSubImage2D
使用来自当前 ?GL_READ_BUFFER
的像素替换二维纹理图像、立方体贴图纹理图像、矩形图像的矩形部分,或一维数组纹理的多个切片的线性部分(而不是像 gl:texSubImage2D/9
那样从主内存替换)。
-spec copyTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, X, Y, Width, Height) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), X :: i(), Y :: i(), Width :: i(), Height :: i().
gl:copyTexSubImage3D/9
和 glCopyTextureSubImage3D
函数使用来自当前 ?GL_READ_BUFFER
的像素替换三维或二维数组纹理图像的矩形部分(而不是像 gl:texSubImage3D/11
那样从主内存替换)。
gl:createBuffers/1
在 Buffers
中返回 N
个先前未使用的缓冲区名称,每个名称代表一个新的缓冲区对象,该对象初始化时就好像它已绑定到未指定的目标一样。
gl:createFramebuffers/1
在 Framebuffers
中返回 N
个先前未使用的帧缓冲区名称,每个名称代表一个初始化为默认状态的新帧缓冲区对象。
-spec createProgram() -> i().
gl:createProgram/0
创建一个空的程序对象,并返回一个非零值,可以通过该值引用该对象。 程序对象是一个可以附加着色器对象的对象。 这提供了一种机制来指定将链接以创建程序的着色器对象。 它还提供了一种方法来检查将用于创建程序的着色器的兼容性(例如,检查顶点着色器和片段着色器之间的兼容性)。 当不再需要作为程序对象的一部分时,可以分离着色器对象。
gl:createProgramPipelines/1
在 Pipelines
中返回 N
个先前未使用的程序管道名称,每个名称代表一个初始化为默认状态的新程序管道对象。
gl:createQueries/2
在 Ids
中返回 N
个先前未使用的查询对象名称,每个名称代表一个具有指定 Target
的新查询对象。
gl:createRenderbuffers/1
在 Renderbuffers
中返回 N
个先前未使用的渲染缓冲区对象名称,每个名称代表一个初始化为默认状态的新渲染缓冲区对象。
gl:createSamplers/1
在 Samplers
中返回 N
个先前未使用的采样器名称,每个名称代表一个初始化为默认状态的新采样器对象。
gl:createShader/1
创建一个空的着色器对象,并返回一个非零值,通过该值可以引用它。着色器对象用于维护定义着色器的源代码字符串。ShaderType
指示要创建的着色器的类型。支持五种类型的着色器。类型为 ?GL_COMPUTE_SHADER
的着色器是打算在可编程计算处理器上运行的着色器。类型为 ?GL_VERTEX_SHADER
的着色器是打算在可编程顶点处理器上运行的着色器。类型为 ?GL_TESS_CONTROL_SHADER
的着色器是打算在控制阶段在可编程细分处理器上运行的着色器。类型为 ?GL_TESS_EVALUATION_SHADER
的着色器是打算在评估阶段在可编程细分处理器上运行的着色器。类型为 ?GL_GEOMETRY_SHADER
的着色器是打算在可编程几何处理器上运行的着色器。类型为 ?GL_FRAGMENT_SHADER
的着色器是打算在可编程片段处理器上运行的着色器。
-spec createShaderProgramv(Type :: enum(), Strings :: [unicode:chardata()]) -> i().
gl:createShaderProgram()
创建一个程序对象,其中包含由 Type
指定的单个阶段的已编译和链接的着色器。Strings
指的是用于创建着色器可执行文件的 Count
个字符串的数组。
gl:createTextures/2
返回 Textures
中先前未使用的 N
个纹理名称,每个名称代表一个由 Target
指定维度和类型的新纹理对象,并初始化为该纹理类型的默认值。
gl:createTransformFeedbacks/1
返回 Ids
中先前未使用的 N
个变换反馈对象名称,每个名称代表一个初始化为默认状态的新变换反馈对象。
gl:createVertexArrays/1
返回 Arrays
中先前未使用的 N
个顶点数组对象名称,每个名称代表一个初始化为默认状态的新顶点数组对象。
-spec cullFace(Mode :: enum()) -> ok.
gl:cullFace/1
指定当启用面剔除时,是剔除正面还是背面(由 mode
指定)。面剔除最初是禁用的。要启用和禁用面剔除,请使用参数 ?GL_CULL_FACE
调用 gl:enable/1
和 gl:disable/1
命令。面包括三角形、四边形、多边形和矩形。
-spec debugMessageControl(Source :: enum(), Type :: enum(), Severity :: enum(), Ids :: [i()], Enabled :: 0 | 1) -> ok.
gl:debugMessageControl/5
控制调试上下文生成的调试消息的报告。Source
、Type
和 Severity
参数形成一个过滤器,用于从 GL 生成的潜在消息池中选择消息。
-spec debugMessageInsert(Source :: enum(), Type :: enum(), Id :: i(), Severity :: enum(), Buf :: string()) -> ok.
gl:debugMessageInsert/5
将用户提供的消息插入调试输出队列。Source
指定用于对消息进行分类的源,并且必须是 ?GL_DEBUG_SOURCE_APPLICATION
或 ?GL_DEBUG_SOURCE_THIRD_PARTY
。所有其他源都保留供 GL 实现使用。Type
指示要插入的消息的类型,并且可以是 ?GL_DEBUG_TYPE_ERROR
、?GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
、?GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
、?GL_DEBUG_TYPE_PORTABILITY
、?GL_DEBUG_TYPE_PERFORMANCE
、?GL_DEBUG_TYPE_MARKER
、?GL_DEBUG_TYPE_PUSH_GROUP
、?GL_DEBUG_TYPE_POP_GROUP
或 ?GL_DEBUG_TYPE_OTHER
之一。Severity
指示消息的严重性,并且可以是 ?GL_DEBUG_SEVERITY_LOW
、?GL_DEBUG_SEVERITY_MEDIUM
、?GL_DEBUG_SEVERITY_HIGH
或 ?GL_DEBUG_SEVERITY_NOTIFICATION
。Id
可用于应用程序定义的用途,并且可以是任何值。此值将被记录并用于标识消息。
-spec deleteBuffers(Buffers :: [i()]) -> ok.
gl:deleteBuffers/1
删除由数组 Buffers
的元素命名的 N
个缓冲区对象。删除缓冲区对象后,它没有内容,并且其名称可以重复使用(例如,通过 gl:genBuffers/1
)。如果删除了当前绑定的缓冲区对象,则绑定将恢复为 0(没有任何缓冲区对象)。
-spec deleteFramebuffers(Framebuffers :: [i()]) -> ok.
gl:deleteFramebuffers/1
删除其名称存储在 Framebuffers
寻址的数组中的 N
个帧缓冲区对象。名称零由 GL 保留,如果它出现在 Framebuffers
中,则会被静默忽略,其他未使用的名称也是如此。一旦帧缓冲区对象被删除,其名称再次未被使用,并且它没有附件。如果当前绑定到一个或多个目标 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
的帧缓冲区被删除,则如同执行了 gl:bindFramebuffer/2
,并且相应的 Target
和 Framebuffer
为零。
gl:deleteLists/2
导致删除连续的一组显示列表。List
是要删除的第一个显示列表的名称,Range
是要删除的显示列表的数量。所有显示列表 d 且 list<= d<= list+range-1 都被删除。
-spec deleteProgram(Program :: i()) -> ok.
gl:deleteProgram/1
释放内存并使 Program
指定的程序对象相关联的名称无效。此命令有效地撤消了对 gl:createProgram/0
的调用效果。
-spec deleteProgramPipelines(Pipelines :: [i()]) -> ok.
gl:deleteProgramPipelines/1
删除其名称存储在数组 Pipelines
中的 N
个程序管道对象。Pipelines
中未使用的名称将被忽略,名称零也是如此。删除程序管道对象后,其名称再次未被使用,并且它没有内容。如果删除了当前绑定的程序管道对象,则该对象的绑定将恢复为零,并且没有程序管道对象变为当前对象。
-spec deleteQueries(Ids :: [i()]) -> ok.
gl:deleteQueries/1
删除由数组 Ids
的元素命名的 N
个查询对象。删除查询对象后,它没有内容,并且其名称可以重复使用(例如,通过 gl:genQueries/1
)。
-spec deleteRenderbuffers(Renderbuffers :: [i()]) -> ok.
gl:deleteRenderbuffers/1
删除其名称存储在 Renderbuffers
寻址的数组中的 N
个渲染缓冲区对象。名称零由 GL 保留,如果它出现在 Renderbuffers
中,则会被静默忽略,其他未使用的名称也是如此。一旦渲染缓冲区对象被删除,其名称再次未被使用,并且它没有内容。如果当前绑定到目标 ?GL_RENDERBUFFER
的渲染缓冲区被删除,则如同执行了 gl:bindRenderbuffer/2
,并且 Target
为 ?GL_RENDERBUFFER
,而 Name
为零。
-spec deleteSamplers(Samplers :: [i()]) -> ok.
gl:deleteSamplers/1
删除由数组 Samplers
的元素命名的 N
个采样器对象。删除采样器对象后,其名称再次未被使用。如果当前绑定到采样器单元的采样器对象被删除,则如同调用 gl:bindSampler/2
,其中 unit 设置为采样器绑定的单元,而 sampler 为零。 samplers 中未使用的名称会被静默忽略,保留名称零也是如此。
-spec deleteShader(Shader :: i()) -> ok.
gl:deleteShader/1
释放内存并使 Shader
指定的着色器对象相关联的名称无效。此命令有效地撤消了对 gl:createShader/1
的调用效果。
-spec deleteSync(Sync :: i()) -> ok.
gl:deleteSync/1
删除由 Sync
指定的同步对象。如果与指定的同步对象对应的栅栏命令已完成,或者如果没有 gl:waitSync/3
或 gl:clientWaitSync/3
命令阻止 Sync
,则立即删除该对象。否则,将标记 Sync
以进行删除,并且当它不再与任何栅栏命令关联并且不再阻止任何 gl:waitSync/3
或 gl:clientWaitSync/3
命令时,它将被删除。在任何一种情况下,在 gl:deleteSync/1
返回之后,名称 Sync
无效,并且不能再用于引用同步对象。
-spec deleteTextures(Textures :: [i()]) -> ok.
gl:deleteTextures/1
删除由数组 Textures
的元素命名的 N
个纹理。删除纹理后,它没有内容或维度,并且其名称可以重复使用(例如,通过 gl:genTextures/1
)。如果删除了当前绑定的纹理,则绑定将恢复为 0(默认纹理)。
-spec deleteTransformFeedbacks(Ids :: [i()]) -> ok.
gl:deleteTransformFeedbacks/1
删除其名称存储在数组 Ids
中的 N
个变换反馈对象。Ids
中未使用的名称将被忽略,名称零也是如此。删除变换反馈对象后,其名称再次未被使用,并且它没有内容。如果删除了活动变换反馈对象,则其名称立即变为未被使用,但只有在不再活动时才删除基础对象。
-spec deleteVertexArrays(Arrays :: [i()]) -> ok.
gl:deleteVertexArrays/1
删除 Arrays
指向的数组中存储的 N
个顶点数组对象。一旦顶点数组对象被删除,它将不再包含任何内容,其名称再次变为未使用状态。如果当前绑定的顶点数组对象被删除,则该对象的绑定将恢复为零,默认的顶点数组将变为当前。 Arrays
中未使用的名称会被静默忽略,零值也会被忽略。
-spec depthFunc(Func :: enum()) -> ok.
gl:depthFunc/1
指定用于将每个传入的像素深度值与深度缓冲区中存在的深度值进行比较的函数。只有在启用深度测试时才会执行比较。(请参阅 gl:enable/1
和 gl:disable/1
中的 ?GL_DEPTH_TEST
。)
-spec depthMask(Flag :: 0 | 1) -> ok.
gl:depthMask/1
指定是否启用深度缓冲区的写入。如果 Flag
为 ?GL_FALSE
,则禁用深度缓冲区写入。否则,启用深度缓冲区写入。初始情况下,深度缓冲区写入是启用的。
等同于 depthRangef/2
。
在裁剪并除以 w
后,深度坐标的范围为 -1 到 1,对应于近裁剪平面和远裁剪平面。每个视口都有一个独立的深度范围,该范围指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。无论实际的深度缓冲区实现如何,窗口坐标深度值都被视为范围从 0 到 1(如颜色分量)。gl:depthRangeArray()
为范围 [First
, First
+ Count
) 中的每个视口指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。因此,gl:depthRangeArray()
接受的值在被接受之前都会被钳制到这个范围内。
在裁剪并除以 w
后,深度坐标的范围为 -1 到 1,对应于近裁剪平面和远裁剪平面。gl:depthRange/2
指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。无论实际的深度缓冲区实现如何,窗口坐标深度值都被视为范围从 0 到 1(如颜色分量)。因此,gl:depthRange/2
接受的值在被接受之前都会被钳制到这个范围内。
在裁剪并除以 w
后,深度坐标的范围为 -1 到 1,对应于近裁剪平面和远裁剪平面。每个视口都有一个独立的深度范围,该范围指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。无论实际的深度缓冲区实现如何,窗口坐标深度值都被视为范围从 0 到 1(如颜色分量)。gl:depthRangeIndexed/3
为指定的视口指定了此范围内的标准化深度坐标到窗口深度坐标的线性映射。因此,gl:depthRangeIndexed/3
接受的值在被接受之前都会被钳制到这个范围内。
gl:detachShader/2
从 Program
指定的程序对象中分离 Shader
指定的着色器对象。此命令可用于撤销命令 gl:attachShader/2
的效果。
-spec disable(Cap :: enum()) -> ok.
等同于 enablei/2
。
-spec disableClientState(Cap :: enum()) -> ok.
等同于 enableClientState/1
。
等同于 enablei/2
。
-spec disableVertexAttribArray(Index :: i()) -> ok.
gl:dispatchCompute/3
启动一个或多个计算工作组。每个工作组都由计算着色器阶段的活动程序对象处理。虽然工作组内的各个着色器调用作为一个单元执行,但工作组是完全独立且以未指定的顺序执行的。Num_groups_x
、Num_groups_y
和 Num_groups_z
分别指定在 X、Y 和 Z 维度中将要调度的本地工作组的数量。
-spec dispatchComputeIndirect(Indirect :: i()) -> ok.
gl:dispatchComputeIndirect/1
使用当前绑定到 ?GL_DISPATCH_INDIRECT_BUFFER
目标的缓冲区对象中存储的参数启动一个或多个计算工作组。每个工作组都由计算着色器阶段的活动程序对象处理。虽然工作组内的各个着色器调用作为一个单元执行,但工作组是完全独立且以未指定的顺序执行的。Indirect
包含存储参数的绑定到 ?GL_DISPATCH_INDIRECT_BUFFER
目标的缓冲区对象的数据存储的偏移量。
gl:drawArrays/3
使用很少的子程序调用来指定多个几何图元。您可以预先指定顶点、法线和颜色的单独数组,而不是调用 GL 程序来传递每个单独的顶点、法线、纹理坐标、边缘标志或颜色,并使用它们通过单次调用 gl:drawArrays/3
来构造一系列图元。
gl:drawArraysIndirect/2
使用很少的子程序调用来指定多个几何图元。gl:drawArraysIndirect/2
的行为类似于 gl:drawArraysInstancedBaseInstance/5
,只是 gl:drawArraysInstancedBaseInstance/5
的参数存储在 Indirect
给出的地址的内存中。
gl:drawArraysInstanced/4
的行为与 gl:drawArrays/3
完全相同,只是执行 Instancecount
次元素范围,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
-spec drawArraysInstancedBaseInstance(Mode :: enum(), First :: i(), Count :: i(), Instancecount :: i(), Baseinstance :: i()) -> ok.
gl:drawArraysInstancedBaseInstance/5
的行为与 gl:drawArrays/3
完全相同,只是执行 Instancecount
次元素范围,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
-spec drawBuffer(Mode :: enum()) -> ok.
当颜色被写入帧缓冲区时,它们被写入由 gl:drawBuffer/1
指定的颜色缓冲区。以下值之一可用于默认帧缓冲区
-spec drawBuffers(Bufs :: [enum()]) -> ok.
gl:drawBuffers/1
和 glNamedFramebufferDrawBuffers
定义了一个缓冲区数组,片段着色器数据的输出将写入其中。如果片段着色器将值写入一个或多个用户定义的输出变量,则每个变量的值将被写入 Bufs
中与分配给该用户定义的输出的位置相对应的位置指定的缓冲区。用于分配给大于或等于 N
的位置的用户定义输出的绘制缓冲区将隐式设置为 ?GL_NONE
,并且写入此类输出的任何数据都将被丢弃。
-spec drawElements(Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem()) -> ok.
gl:drawElements/4
使用很少的子程序调用来指定多个几何图元。您可以预先指定顶点、法线等单独的数组,而不是调用 GL 函数来传递每个单独的顶点、法线、纹理坐标、边缘标志或颜色,并使用它们通过单次调用 gl:drawElements/4
来构造一系列图元。
-spec drawElementsBaseVertex(Mode, Count, Type, Indices, Basevertex) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Basevertex :: i().
gl:drawElementsBaseVertex/5
的行为与 gl:drawElements/4
完全相同,只是相应绘制调用传递的第 i
个元素将从每个启用数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
可表示的最大值,则就像将计算转换为 32 位无符号整数一样(在溢出条件下进行包装)。如果总和为负数,则操作未定义。
gl:drawElementsIndirect/3
使用很少的子程序调用来指定多个索引几何图元。gl:drawElementsIndirect/3
的行为类似于 gl:drawElementsInstancedBaseVertexBaseInstance/7
,只是 gl:drawElementsInstancedBaseVertexBaseInstance/7
的参数存储在 Indirect
给出的地址的内存中。
-spec drawElementsInstanced(Mode, Count, Type, Indices, Instancecount) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i().
gl:drawElementsInstanced/5
的行为与 gl:drawElements/4
完全相同,只是执行 Instancecount
次元素集,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
drawElementsInstancedBaseInstance(Mode, Count, Type, Indices, Instancecount, Baseinstance)
查看源代码-spec drawElementsInstancedBaseInstance(Mode, Count, Type, Indices, Instancecount, Baseinstance) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i(), Baseinstance :: i().
gl:drawElementsInstancedBaseInstance/6
的行为与 gl:drawElements/4
完全相同,只是执行 Instancecount
次元素集,并且内部计数器 InstanceID
在每次迭代时都会递增。InstanceID
是一个内部 32 位整数计数器,可以被顶点着色器读取为 ?gl_InstanceID
。
-spec drawElementsInstancedBaseVertex(Mode, Count, Type, Indices, Instancecount, Basevertex) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i(), Basevertex :: i().
gl:drawElementsInstancedBaseVertex/6
的行为与 gl:drawElementsInstanced/5
完全相同,只是相应绘制调用传递的第 i
个元素将从每个启用数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
可表示的最大值,则就像将计算转换为 32 位无符号整数一样(在溢出条件下进行包装)。如果总和为负数,则操作未定义。
drawElementsInstancedBaseVertexBaseInstance(Mode, Count, Type, Indices, Instancecount, Basevertex, Baseinstance)
查看源代码-spec drawElementsInstancedBaseVertexBaseInstance(Mode, Count, Type, Indices, Instancecount, Basevertex, Baseinstance) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i(), Basevertex :: i(), Baseinstance :: i().
gl:drawElementsInstancedBaseVertexBaseInstance/7
的行为与 gl:drawElementsInstanced/5
完全相同,只是相应绘制调用传递的第 i
个元素将从每个启用数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
可表示的最大值,则就像将计算转换为 32 位无符号整数一样(在溢出条件下进行包装)。如果总和为负数,则操作未定义。
-spec drawPixels(Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem()) -> ok.
gl:drawPixels/5
从内存中读取像素数据,并将其写入帧缓冲区,写入位置相对于当前光栅位置,前提是该光栅位置有效。使用 gl:rasterPos()
或 gl:windowPos()
设置当前光栅位置;使用 gl:get()
以及参数 ?GL_CURRENT_RASTER_POSITION_VALID
来确定指定的光栅位置是否有效,使用 gl:get()
以及参数 ?GL_CURRENT_RASTER_POSITION
来查询光栅位置。
-spec drawRangeElements(Mode, Start, End, Count, Type, Indices) -> ok when Mode :: enum(), Start :: i(), End :: i(), Count :: i(), Type :: enum(), Indices :: offset() | mem().
gl:drawRangeElements/6
是 gl:drawElements/4
的受限形式。Mode
和 Count
与 gl:drawElements/4
的对应参数匹配,并附加限制,即数组 Count
中的所有值都必须介于 Start
和 End
之间(包括 Start
和 End
)。
-spec drawRangeElementsBaseVertex(Mode, Start, End, Count, Type, Indices, Basevertex) -> ok when Mode :: enum(), Start :: i(), End :: i(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Basevertex :: i().
gl:drawRangeElementsBaseVertex/7
是 gl:drawElementsBaseVertex/5
的受限形式。Mode
、Count
和 Basevertex
与 gl:drawElementsBaseVertex/5
的对应参数匹配,并附加限制,即数组 Indices
中的所有值在添加 Basevertex
之前都必须介于 Start
和 End
之间(包括 Start
和 End
)。位于范围 [Start
, End
] 之外的索引值的处理方式与 gl:drawElementsBaseVertex/5
相同。对应的绘制调用传输的第 i
个元素将从每个启用的数组的 Indices
[i] + Basevertex
元素中获取。如果结果值大于 Type
所能表示的最大值,则如同将计算结果转换为 32 位无符号整数(在溢出条件下进行环绕)。如果总和为负数,则操作未定义。
gl:drawTransformFeedback/2
使用从 Id
指定的变换反馈中检索的计数,绘制由 Mode
指定的类型的图元。调用 gl:drawTransformFeedback/2
等同于调用 gl:drawArrays/3
,其中 Mode
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流零上捕获的顶点数。
gl:drawTransformFeedbackInstanced/3
使用从 Id
指定的变换反馈对象的 Stream
指定的变换反馈流中检索的计数,绘制多个由 Mode
指定的类型的图元副本。调用 gl:drawTransformFeedbackInstanced/3
等同于调用 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流零上捕获的顶点数。
gl:drawTransformFeedbackStream/3
使用从 Id
指定的变换反馈对象的 Stream
指定的变换反馈流中检索的计数,绘制由 Mode
指定的类型的图元。调用 gl:drawTransformFeedbackStream/3
等同于调用 gl:drawArrays/3
,其中 Mode
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流 Stream
上捕获的顶点数。
-spec drawTransformFeedbackStreamInstanced(Mode :: enum(), Id :: i(), Stream :: i(), Instancecount :: i()) -> ok.
gl:drawTransformFeedbackStreamInstanced/4
使用从 Id
指定的变换反馈对象的 Stream
指定的变换反馈流中检索的计数,绘制多个由 Mode
指定的类型的图元副本。调用 gl:drawTransformFeedbackStreamInstanced/4
等同于调用 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
按指定设置,First
设置为零,Count
设置为上次在 Id
指定的变换反馈对象上激活变换反馈时在顶点流 Stream
上捕获的顶点数。
-spec edgeFlag(Flag :: 0 | 1) -> ok.
等同于 edgeFlagv/1
。
gl:edgeFlagPointer/2
指定渲染时使用的布尔边标志数组的位置和数据格式。Stride
指定从一个边标志到下一个边标志的字节步幅,允许将顶点和属性打包到单个数组中或存储在单独的数组中。
-spec edgeFlagv({Flag :: 0 | 1}) -> ok.
在 gl:'begin'/1
/gl:'end'/0
对之间指定的每个多边形、独立三角形或独立四边形的顶点都被标记为边界边或非边界边的起点。如果在指定顶点时当前边标志为真,则该顶点被标记为边界边的起点。否则,该顶点被标记为非边界边的起点。gl:edgeFlag/1
如果 Flag
为 ?GL_TRUE
,则将边标志位设置为 ?GL_TRUE
,否则设置为 ?GL_FALSE
。
-spec enable(Cap :: enum()) -> ok.
等同于 enablei/2
。
-spec enableClientState(Cap :: enum()) -> ok.
gl:enableClientState/1
和 gl:disableClientState/1
启用或禁用单个客户端功能。默认情况下,所有客户端功能都处于禁用状态。gl:enableClientState/1
和 gl:disableClientState/1
都接受单个参数 Cap
,它可以采用以下值之一
gl:enable/1
和 gl:disable/1
启用和禁用各种功能。使用 gl:isEnabled/1
或 gl:get()
确定任何功能的当前设置。除了 ?GL_DITHER
和 ?GL_MULTISAMPLE
之外,每个功能的初始值均为 ?GL_FALSE
。?GL_DITHER
和 ?GL_MULTISAMPLE
的初始值为 ?GL_TRUE
。
-spec enableVertexAttribArray(Index :: i()) -> ok.
gl:enableVertexAttribArray/1
和 gl:enableVertexArrayAttrib/2
启用由 Index
指定的通用顶点属性数组。gl:enableVertexAttribArray/1
使用当前绑定的顶点数组对象进行操作,而 gl:enableVertexArrayAttrib/2
更新 ID 为 Vaobj
的顶点数组对象的状态。
-spec 'end'() -> ok.
gl:'begin'/1
和 gl:'end'/0
界定定义图元或一组类似图元的顶点。gl:'begin'/1
接受一个参数,用于指定以十种方式中的哪一种方式解释顶点。将 n 作为从 1 开始的整数计数,N 作为指定的顶点总数,解释如下
-spec endConditionalRender() -> ok.
条件渲染使用 gl:beginConditionalRender/2
启动,并使用 gl:endConditionalRender/0
结束。在条件渲染期间,如果查询对象 Id
的 (?GL_SAMPLES_PASSED
) 结果为零,或者 (?GL_ANY_SAMPLES_PASSED
) 结果为 ?GL_FALSE
,则所有顶点数组命令,以及 gl:clear/1
和 gl:clearBuffer()
均无效。设置当前顶点状态的命令(如 gl:vertexAttrib()
)的结果未定义。如果 (?GL_SAMPLES_PASSED
) 结果为非零,或者 (?GL_ANY_SAMPLES_PASSED
) 结果为 ?GL_TRUE
,则不会丢弃此类命令。gl:beginConditionalRender/2
的 Id
参数必须是从之前调用 gl:genQueries/1
返回的查询对象的名称。Mode
指定如何解释查询对象的结果。如果 Mode
为 ?GL_QUERY_WAIT
,则 GL 会等待查询结果可用,然后使用结果来确定是否丢弃后续的渲染命令。如果 Mode
为 ?GL_QUERY_NO_WAIT
,则 GL 可以选择无条件执行后续渲染命令,而无需等待查询完成。
-spec endList() -> ok.
等同于 newList/2
。
-spec endQuery(Target :: enum()) -> ok.
gl:beginQuery/2
和 gl:endQuery/1
划定了查询对象的边界。Query
必须是先前调用 gl:genQueries/1
返回的名称。如果名为 Id
的查询对象尚不存在,则会根据 Target
确定的类型创建它。Target
必须是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
之一。查询对象的行为取决于其类型,如下所示。
gl:beginQueryIndexed/3
和 gl:endQueryIndexed/2
划定了查询对象的边界。Query
必须是先前调用 gl:genQueries/1
返回的名称。如果名为 Id
的查询对象尚不存在,则会根据 Target
确定的类型创建它。Target
必须是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
之一。查询对象的行为取决于其类型,如下所示。
-spec endTransformFeedback() -> ok.
变换反馈模式捕获顶点着色器(如果激活,则捕获几何着色器)写入的可变变量的值。变换反馈在调用 gl:beginTransformFeedback/1
之后被认为是激活状态,直到随后调用 gl:endTransformFeedback/0
为止。变换反馈命令必须成对出现。
-spec evalCoord1d(U :: f()) -> ok.
等效于 evalCoord2fv/1
。
-spec evalCoord1dv({U :: f()}) -> ok.
等效于 evalCoord2fv/1
。
-spec evalCoord1f(U :: f()) -> ok.
等效于 evalCoord2fv/1
。
-spec evalCoord1fv({U :: f()}) -> ok.
等效于 evalCoord2fv/1
。
等效于 evalCoord2fv/1
。
等效于 evalCoord2fv/1
。
等效于 evalCoord2fv/1
。
gl:evalCoord1()
在参数 U
处评估启用的一维映射。gl:evalCoord2()
对二维映射执行相同的操作,使用两个域值 U
和 V
。要定义映射,请调用 glMap1
和 glMap2
;要启用和禁用它,请调用 gl:enable/1
和 gl:disable/1
。
等效于 evalMesh2/5
。
gl:mapGrid()
和 gl:evalMesh()
配合使用,以高效地生成和评估一系列均匀间隔的映射域值。gl:evalMesh()
逐步遍历一维或二维网格的整数域,其范围是由 glMap1
和 glMap2
指定的评估映射的域。Mode
确定结果顶点是连接为点、线还是填充多边形。
-spec evalPoint1(I :: i()) -> ok.
等效于 evalPoint2/2
。
gl:mapGrid()
和 gl:evalMesh()
配合使用,以高效地生成和评估一系列均匀间隔的映射域值。gl:evalPoint()
可用于评估与 gl:evalMesh()
遍历的相同网格空间中的单个网格点。调用 gl:evalPoint1/1
等效于调用 glEvalCoord1( i.ð u+u 1 ); 其中 ð u=(u 2-u 1)/n
gl:feedbackBuffer/3
函数控制反馈。与选择一样,反馈也是一种 GL 模式。通过使用 ?GL_FEEDBACK
调用 gl:renderMode/1
来选择该模式。当 GL 处于反馈模式时,光栅化不会生成任何像素。相反,有关本来会被光栅化的图元的信息会使用 GL 反馈给应用程序。
gl:fenceSync/2
创建一个新的栅栏同步对象,将栅栏命令插入到 GL 命令流中,并将其与该同步对象关联,并返回与该同步对象对应的非零名称。
-spec finish() -> ok.
gl:finish/0
在所有先前调用的 GL 命令的效果完成之前不会返回。这些效果包括对 GL 状态的所有更改、对连接状态的所有更改以及对帧缓冲区内容的所有更改。
-spec flush() -> ok.
不同的 GL 实现将命令缓冲在多个不同的位置,包括网络缓冲区和图形加速器本身。gl:flush/0
清空所有这些缓冲区,使所有发出的命令在被实际渲染引擎接受后尽快执行。尽管此执行可能不会在任何特定时间段内完成,但它会在有限的时间内完成。
gl:flushMappedBufferRange/3
指示已对映射缓冲区对象的范围进行了修改。缓冲区对象必须先前已使用 ?GL_MAP_FLUSH_EXPLICIT_BIT
标志进行映射。
-spec fogCoordd(Coord :: f()) -> ok.
等效于 fogCoordfv/1
。
-spec fogCoorddv({Coord :: f()}) -> ok.
等效于 fogCoordfv/1
。
-spec fogCoordf(Coord :: f()) -> ok.
等效于 fogCoordfv/1
。
-spec fogCoordfv({Coord :: f()}) -> ok.
gl:fogCoord()
指定与每个顶点和当前光栅位置关联的雾坐标。指定的值将被插值并用于计算雾颜色(请参见 gl:fog()
)。
gl:fogCoordPointer/3
指定渲染时要使用的雾坐标数组的位置和数据格式。Type
指定每个雾坐标的数据类型,Stride
指定从一个雾坐标到下一个雾坐标的字节跨度,允许将顶点和属性打包到单个数组中或存储在单独的数组中。
等效于 fogiv/2
。
等效于 fogiv/2
。
等效于 fogiv/2
。
雾最初处于禁用状态。启用后,雾会影响光栅化的几何图形、位图和像素块,但不影响缓冲区清除操作。要启用和禁用雾,请使用参数 ?GL_FOG
调用 gl:enable/1
和 gl:disable/1
。
gl:framebufferParameteri/3
和 glNamedFramebufferParameteri
修改指定帧缓冲区对象中名为 Pname
的参数的值。默认绘制和读取帧缓冲区没有可修改的参数,因此它们不是这些命令的有效目标。
-spec framebufferRenderbuffer(Target, Attachment, Renderbuffertarget, Renderbuffer) -> ok when Target :: enum(), Attachment :: enum(), Renderbuffertarget :: enum(), Renderbuffer :: i().
gl:framebufferRenderbuffer/4
和 glNamedFramebufferRenderbuffer
将渲染缓冲区作为指定帧缓冲区对象的逻辑缓冲区之一进行附加。渲染缓冲区无法附加到默认绘制和读取帧缓冲区,因此它们不是这些命令的有效目标。
-spec framebufferTextureLayer(Target :: enum(), Attachment :: enum(), Texture :: i(), Level :: i(), Layer :: i()) -> ok.
这些命令将选定的 mipmap 级别或纹理对象的图像作为指定帧缓冲区对象的逻辑缓冲区之一进行附加。纹理无法附加到默认绘制和读取帧缓冲区,因此它们不是这些命令的有效目标。
-spec frontFace(Mode :: enum()) -> ok.
在完全由不透明闭合表面组成的场景中,背面多边形永远不可见。消除这些不可见的多边形具有加速图像渲染的明显好处。要启用和禁用消除背面多边形,请使用参数 ?GL_CULL_FACE
调用 gl:enable/1
和 gl:disable/1
。
-spec frustum(Left :: f(), Right :: f(), Bottom :: f(), Top :: f(), Near_val :: f(), Far_val :: f()) -> ok.
gl:frustum/6
描述一个产生透视投影的透视矩阵。当前矩阵(请参见 gl:matrixMode/1
)乘以该矩阵,结果将替换当前矩阵,就像调用 gl:multMatrix()
并将以下矩阵作为其参数一样
gl:genBuffers/1
在 Buffers
中返回 N
个缓冲区对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genBuffers/1
之前,返回的名称均未使用。
-spec generateMipmap(Target :: enum()) -> ok.
-spec generateTextureMipmap(Texture :: i()) -> ok.
gl:generateMipmap/1
和 gl:generateTextureMipmap/1
为指定的纹理对象生成 mipmap。对于 gl:generateMipmap/1
,纹理对象绑定到 Target
。对于 gl:generateTextureMipmap/1
,Texture
是纹理对象的名称。
gl:genFramebuffers/1
在 Ids
中返回 N
个帧缓冲区对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genFramebuffers/1
之前,返回的名称均未使用。
gl:genLists/1
有一个参数 Range
。它返回一个整数 n
,使得创建了 Range
个连续的空显示列表,命名为 n、n+1、...、n+range-1。如果 Range
为 0,如果不存在 Range
个连续的可用名称的组,或者如果生成任何错误,则不会生成显示列表,并且返回 0。
gl:genProgramPipelines/1
在 Pipelines
中返回 N
个先前未使用的程序管道对象名称。这些名称被标记为已使用,仅用于 gl:genProgramPipelines/1
,但只有在首次绑定时才会获取程序管道状态。
gl:genQueries/1
在 Ids
中返回 N
个查询对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genQueries/1
之前,返回的名称均未使用。
gl:genRenderbuffers/1
在 Renderbuffers
中返回 N
个渲染缓冲区对象名称。不能保证这些名称构成一组连续的整数;但是,可以保证在调用 gl:genRenderbuffers/1
之前,返回的名称均未使用。
gl:genSamplers/1
在 Samplers
中返回 N
个采样器对象名称。不能保证这些名称形成一个连续的整数集合;但是,可以保证在调用 gl:genSamplers/1
之前,返回的名称都没有被使用。
gl:genTextures/1
在 Textures
中返回 N
个纹理名称。不能保证这些名称形成一个连续的整数集合;但是,可以保证在调用 gl:genTextures/1
之前,返回的名称都没有被使用。
gl:genTransformFeedbacks/1
在 Ids
中返回 N
个先前未使用的变换反馈对象名称。这些名称被标记为已使用,仅用于 gl:genTransformFeedbacks/1
,但它们仅在首次绑定时才获得变换反馈状态。
gl:genVertexArrays/1
在 Arrays
中返回 N
个顶点数组对象名称。不能保证这些名称形成一个连续的整数集合;但是,可以保证在调用 gl:genVertexArrays/1
之前,返回的名称都没有被使用。
-spec getActiveAttrib(Program :: i(), Index :: i(), BufSize :: i()) -> {Size :: i(), Type :: enum(), Name :: string()}.
gl:getActiveAttrib/3
返回由 Program
指定的程序对象中活动属性变量的信息。可以通过使用值 ?GL_ACTIVE_ATTRIBUTES
调用 gl:getProgram()
来获取活动属性的数量。 Index
的值为 0 选择第一个活动属性变量。 Index
的允许值范围从 0 到活动属性变量的数量减 1。
-spec getActiveSubroutineName(Program :: i(), Shadertype :: enum(), Index :: i(), Bufsize :: i()) -> string().
gl:getActiveSubroutineName/4
查询在 Program
中给出的程序对象中的活动着色器子例程统一变量的名称。Index
指定由 Stage
给出的着色器阶段内的着色器子例程统一变量的索引,并且必须介于零和着色器阶段的 ?GL_ACTIVE_SUBROUTINES
的值减 1 之间。
-spec getActiveSubroutineUniformName(Program :: i(), Shadertype :: enum(), Index :: i(), Bufsize :: i()) -> string().
gl:getActiveSubroutineUniformName/4
检索活动着色器子例程统一变量的名称。Program
包含包含统一变量的程序的名称。Shadertype
指定统一变量位置有效的阶段,由 Index
给出。Index
必须介于零和着色器阶段的 ?GL_ACTIVE_SUBROUTINE_UNIFORMS
的值减 1 之间。
-spec getActiveUniform(Program :: i(), Index :: i(), BufSize :: i()) -> {Size :: i(), Type :: enum(), Name :: string()}.
gl:getActiveUniform/3
返回由 Program
指定的程序对象中活动统一变量的信息。可以通过使用值 ?GL_ACTIVE_UNIFORMS
调用 gl:getProgram()
来获取活动统一变量的数量。 Index
的值为 0 选择第一个活动统一变量。Index
的允许值范围从 0 到活动统一变量的数量减 1。
-spec getActiveUniformBlockiv(Program :: i(), UniformBlockIndex :: i(), Pname :: enum(), Params :: mem()) -> ok.
gl:getActiveUniformBlockiv/4
检索有关 Program
中活动统一变量块的信息。
-spec getActiveUniformBlockName(Program :: i(), UniformBlockIndex :: i(), BufSize :: i()) -> string().
gl:getActiveUniformBlockName/3
检索 Program
内 UniformBlockIndex
处的活动统一变量块的名称。
gl:getActiveUniformName/3
返回 Program
内 UniformIndex
处的活动统一变量的名称。如果 UniformName
不为 NULL,则最多将 BufSize
个字符(包括一个空终止符)写入地址由 UniformName
指定的数组中。如果 Length
不为 NULL,则写入 UniformName
的字符数(不包括空终止符)将放置在地址在 Length
中指定的变量中。如果 Length
为 NULL,则不返回长度。Program
中最长统一变量名称的长度由 ?GL_ACTIVE_UNIFORM_MAX_LENGTH
的值给出,可以使用 gl:getProgram()
进行查询。
gl:getActiveUniformsiv/3
查询在 Program
中,其索引在 UniformIndices
的 UniformCount
无符号整数数组中指定的每个统一变量的名为 Pname
的参数的值。成功后,每个统一变量的参数值将写入地址在 Params
中给出的数组中的相应条目。如果生成错误,则不会将任何内容写入 Params
。
gl:getAttachedShaders/2
返回附加到 Program
的着色器对象的名称。附加到 Program
的着色器对象的名称将在 Shaders
中返回。写入 Shaders
中的着色器名称的实际数量在 Count
中返回。如果没有任何着色器对象附加到 Program
,则 Count
设置为 0。 Shaders
中可能返回的最大着色器名称数量由 MaxCount
指定。
gl:getAttribLocation/2
查询由 Program
指定的先前链接的程序对象中由 Name
指定的属性变量,并返回绑定到该属性变量的通用顶点属性的索引。如果 Name
是矩阵属性变量,则返回矩阵第一列的索引。如果命名的属性变量不是指定程序对象中的活动属性,或者如果 Name
以保留前缀“gl_”开头,则返回 -1 的值。
等效于 getIntegerv/1
。
-spec getBooleanv(Pname :: enum()) -> [0 | 1].
等效于 getIntegerv/1
。
gl:getBufferParameteriv/2
在 Data
中返回由 Target
指定的缓冲区对象的选定参数。
这些函数在 Data
中返回指定缓冲区对象的选定参数。
gl:getBufferSubData/4
和 glGetNamedBufferSubData
返回指定缓冲区对象的数据存储的全部或部分数据内容。从缓冲区对象的数据存储中将起始于字节偏移量 Offset
并扩展 Size
字节的数据复制到 Data
指向的内存中。如果缓冲区对象当前已映射,或者如果 Offset
和 Size
一起定义超出缓冲区对象数据存储范围的范围,则会抛出错误。
gl:getClipPlane/1
在 Equation
中返回 Plane
的平面方程的四个系数。
gl:getColorTable/4
在 Table
中返回由 Target
指定的颜色表的内容。不执行像素传输操作,但执行适用于 gl:readPixels/7
的像素存储模式。
返回特定于颜色表 Target
的参数。
gl:getCompressedTexImage/3
和 glGetnCompressedTexImage
将与 Target
和 Lod
关联的压缩纹理图像返回到 Pixels
中。glGetCompressedTextureImage
的作用相同,但它不是采用纹理目标,而是采用纹理对象的 ID。Pixels
对于 glGetnCompresedTexImage
和 glGetCompressedTextureImage
函数应为 BufSize
字节的数组,对于 gl:getCompressedTexImage/3
应为 ?GL_TEXTURE_COMPRESSED_IMAGE_SIZE
字节。如果实际数据占用的空间小于 BufSize
,则不会触及剩余字节。 Target
指定纹理目标,该函数应从中提取数据的纹理绑定到该目标。Lod
指定所需图像的详细程度编号。
-spec getConvolutionFilter(Target :: enum(), Format :: enum(), Type :: enum(), Image :: mem()) -> ok.
gl:getConvolutionFilter/4
返回当前 1D 或 2D 卷积滤波器内核作为图像。根据 Format
和 Type
中的规范,将一维或二维图像放置在 Image
中。不在此图像上执行像素传输操作,但会应用相关的像素存储模式。
gl:getConvolutionParameter()
检索卷积参数。Target
确定查询哪个卷积滤波器。Pname
确定返回哪个参数
-spec getDebugMessageLog(Count :: i(), BufSize :: i()) -> {i(), Sources :: [enum()], Types :: [enum()], Ids :: [i()], Severities :: [enum()], MessageLog :: [string()]}.
gl:getDebugMessageLog/2
从调试消息日志中检索消息。从日志中检索最多 Count
条消息。如果 Sources
不为 NULL,则将每条消息的来源写入数组的最多 Count
个元素中。如果 Types
不为 NULL,则将每条消息的类型写入数组的最多 Count
个元素中。如果 Id
不为 NULL,则将每条消息的标识符写入数组的最多 Count
个元素中。如果 Severities
不为 NULL,则将每条消息的严重性写入数组的最多 Count
个元素中。如果 Lengths
不为 NULL,则将每条消息的长度写入数组的最多 Count
个元素中。
等效于 getIntegerv/1
。
等效于 getIntegerv/1
。
-spec getError() -> enum().
gl:getError/0
返回错误标志的值。每个可检测到的错误都被分配一个数字代码和符号名称。当发生错误时,错误标志会被设置为相应的错误代码值。在调用 gl:getError/0
之前,不会记录其他错误,该错误代码将被返回,并且标志将被重置为 ?GL_NO_ERROR
。如果调用 gl:getError/0
返回 ?GL_NO_ERROR
,则表示自上次调用 gl:getError/0
或自 GL 初始化以来,没有发生可检测到的错误。
等效于 getIntegerv/1
。
等效于 getIntegerv/1
。
gl:getFragDataIndex/2
返回当程序对象 Program
最后一次链接时,变量 Name
被绑定到的片段颜色的索引。如果 Name
不是 Program
的 varying out 变量,或者发生错误,将返回 -1。
gl:getFragDataLocation/2
检索程序 Program
的用户定义 varying out 变量 Name
的指定颜色编号绑定。Program
必须先前已链接。Name
必须是以 null 结尾的字符串。如果 Name
不是 Program
中活跃的用户定义 varying out 片段着色器变量的名称,将返回 -1。
-spec getFramebufferAttachmentParameteriv(Target :: enum(), Attachment :: enum(), Pname :: enum()) -> i().
gl:getFramebufferAttachmentParameteriv/3
和 glGetNamedFramebufferAttachmentParameteriv
返回指定帧缓冲对象附件的参数。
gl:getFramebufferParameteriv/2
和 glGetNamedFramebufferParameteriv
查询指定帧缓冲对象的参数。
-spec getGraphicsResetStatus() -> enum().
某些事件可能导致 GL 上下文重置。这种重置会导致所有上下文状态丢失,并要求应用程序在受影响的上下文中重新创建所有对象。
-spec getHistogram(Target :: enum(), Reset :: 0 | 1, Format :: enum(), Type :: enum(), Values :: mem()) -> ok.
gl:getHistogram/5
返回当前直方图表,作为一个一维图像,其宽度与直方图相同。此图像不执行像素传输操作,但适用于 1D 图像的像素存储模式将受到尊重。
gl:getHistogramParameter()
用于查询当前直方图或代理的参数值。可以通过使用 Target
为 ?GL_HISTOGRAM
(获取当前直方图表的信息)或 ?GL_PROXY_HISTOGRAM
(获取最近代理请求的信息)以及 Pname
参数的以下值之一调用 gl:getHistogramParameter()
来查询直方图状态信息。
等效于 getIntegerv/1
。
等效于 getIntegerv/1
。
等效于 getIntegerv/1
。
这些命令返回 GL 中简单状态变量的值。Pname
是一个符号常量,指示要返回的状态变量,而 Data
是一个指向要放置返回数据的指定类型的数组的指针。
-spec getInternalformativ(Target :: enum(), Internalformat :: enum(), Pname :: enum(), BufSize :: i()) -> [i()].
无可用文档。
等效于 getLightiv/2
。
gl:getLight()
在 Params
中返回光源参数的值。 Light
命名光源,并且是 ?GL_LIGHT
i 形式的符号名称,其中 i 的范围从 0 到 ?GL_MAX_LIGHTS
- 1。?GL_MAX_LIGHTS
是一个实现相关的常量,大于或等于 8。Pname
通过符号名称指定十个光源参数之一。
等效于 getMapiv/3
。
等效于 getMapiv/3
。
glMap1
和 glMap2
定义评估器。 gl:getMap()
返回评估器参数。 Target
选择一个映射, Query
选择一个特定的参数,并且 V
指向将要返回值的存储位置。
等效于 getMaterialiv/2
。
gl:getMaterial()
在 Params
中返回材质 Face
的参数 Pname
的值。定义了六个参数
-spec getMinmax(Target :: enum(), Reset :: 0 | 1, Format :: enum(), Types :: enum(), Values :: mem()) -> ok.
gl:getMinmax/5
返回累积的最小和最大像素值(基于每个组件计算),在一个宽度为 2 的一维图像中。第一组返回值是最小值,第二组返回值是最大值。返回值的格式由 Format
确定,其类型由 Types
确定。
gl:getMinmaxParameter()
通过将 Pname
设置为以下值之一来检索当前 minmax 表的参数
gl:getMultisamplefv/2
查询给定样本的位置。 Pname
指定要检索的样本参数,并且必须为 ?GL_SAMPLE_POSITION
。 Index
对应于应返回其位置的样本。样本位置在 Val[0]
和 Val[1]
中作为两个浮点值返回,每个值都在 0 到 1 之间,分别对应于该样本在 GL 像素空间中的 X
和 Y
位置。(0.5, 0.5) 这对应于像素中心。Index
必须在零和 ?GL_SAMPLES
的值减一之间。
等效于 getPixelMapusv/2
。
等效于 getPixelMapusv/2
。
有关 Map
参数的可接受值的说明,请参见 gl:pixelMap()
参考页。gl:getPixelMap()
在 Data
中返回 Map
中指定的像素映射的内容。像素映射在执行 gl:readPixels/7
, gl:drawPixels/5
, gl:copyPixels/5
, gl:texImage1D/8
, gl:texImage2D/9
, gl:texImage3D/10
, gl:texSubImage1D/7
, gl:texSubImage2D/9
, gl:texSubImage3D/11
, gl:copyTexImage1D/7
, gl:copyTexImage2D/8
, gl:copyTexSubImage1D/6
, gl:copyTexSubImage2D/8
, 和 gl:copyTexSubImage3D/9
期间使用,以将颜色索引、模板索引、颜色分量和深度分量映射到其他值。
-spec getPolygonStipple() -> binary().
gl:getPolygonStipple/0
向 Pattern
返回一个 32×32 多边形点画模式。该模式被打包到内存中,就像调用了 gl:readPixels/7
,其 height
和 width
都为 32,type
为 ?GL_BITMAP
,format
为 ?GL_COLOR_INDEX
,并且点画模式存储在内部 32×32 颜色索引缓冲区中。但是,与 gl:readPixels/7
不同,像素传输操作(移位、偏移、像素映射)不会应用于返回的点画图像。
-spec getProgramBinary(Program :: i(), BufSize :: i()) -> {BinaryFormat :: enum(), Binary :: binary()}.
gl:getProgramBinary/2
将 Program
的已编译和链接的可执行文件的二进制表示返回到字节数组中,该数组的地址在 Binary
中指定。可以写入 Binary
的最大字节数由 BufSize
指定。如果程序二进制文件的大小大于 BufSize
字节,则会生成错误,否则写入 Binary
的实际字节数将返回到由 Length
给定地址的变量中。如果 Length
为 ?NULL
,则不返回长度。
gl:getProgramInfoLog/2
返回指定程序对象的信息日志。当程序对象被链接或验证时,程序对象的信息日志将被修改。返回的字符串将以 null 结尾。
gl:getProgramInterfaceiv/3
查询 Program
中由 ProgramInterface
标识的接口的属性,其属性名称由 Pname
给出。
gl:getProgram()
在 Params
中返回特定程序对象的参数值。定义了以下参数
gl:getProgramPipelineInfoLog/2
检索程序管线对象 Pipeline
的信息日志。信息日志(包括其 null 终止符)被写入字符数组,该数组的地址由 InfoLog
给出。可以写入 InfoLog
的最大字符数由 BufSize
给出,并且写入 InfoLog
的实际字符数返回到由 Length
给定地址的整数中。如果 Length
为 ?NULL
,则不返回长度。
gl:getProgramPipelineiv/2
检索程序管线对象 Pipeline
的属性值。 Pname
指定要检索其值的参数的名称。参数的值被写入由 Params
给定地址的变量中。
gl:getProgramResourceIndex/3
返回分配给程序对象 Program
的接口类型 ProgramInterface
中名为 Name
的资源的无符号整数索引。
-spec getProgramResourceLocation(Program :: i(), ProgramInterface :: enum(), Name :: string()) -> i().
gl:getProgramResourceLocation/3
返回分配给程序对象 Program
的接口 ProgramInterface
中名为 Name
的变量的位置。Program
必须是已成功链接的程序的名称。ProgramInterface
必须是 ?GL_UNIFORM
, ?GL_PROGRAM_INPUT
, ?GL_PROGRAM_OUTPUT
, ?GL_VERTEX_SUBROUTINE_UNIFORM
, ?GL_TESS_CONTROL_SUBROUTINE_UNIFORM
, ?GL_TESS_EVALUATION_SUBROUTINE_UNIFORM
, ?GL_GEOMETRY_SUBROUTINE_UNIFORM
, ?GL_FRAGMENT_SUBROUTINE_UNIFORM
, ?GL_COMPUTE_SUBROUTINE_UNIFORM
, 或 ?GL_TRANSFORM_FEEDBACK_BUFFER
之一。
-spec getProgramResourceLocationIndex(Program :: i(), ProgramInterface :: enum(), Name :: string()) -> i().
gl:getProgramResourceLocationIndex/3
返回程序对象 Program
中接口 ProgramInterface
中名为 Name
的变量分配的片段颜色索引。Program
必须是已成功链接的程序的名称。ProgramInterface
必须是 ?GL_PROGRAM_OUTPUT
。
-spec getProgramResourceName(Program :: i(), ProgramInterface :: enum(), Index :: i(), BufSize :: i()) -> string().
gl:getProgramResourceName/4
检索程序对象 Program
的接口 ProgramInterface
中索引为 Index
的单个活动资源的名称字符串。Index
必须小于 ProgramInterface
的活动资源列表中的条目数。
gl:getProgramStage()
查询附加到程序对象的着色器阶段的参数。Program
包含附加着色器的程序的名称。Shadertype
指定要从中查询参数的阶段。Pname
指定应查询哪个参数。要查询的参数的值将返回到 Values
中指定的地址的变量中。
等效于 getQueryObjectuiv/2
。
等效于 getQueryObjectuiv/2
。
等效于 getQueryObjectuiv/2
。
等效于 getQueryObjectuiv/2
。
gl:getQueryIndexediv/3
在 Params
中返回由 Target
和 Index
指定的索引查询对象目标的选定参数。Index
指定查询对象目标的索引,并且必须在零和一个特定于目标的最大值之间。
gl:getQueryiv/2
在 Params
中返回由 Target
指定的查询对象目标的选定参数。
等效于 getQueryObjectuiv/2
。
等效于 getQueryObjectuiv/2
。
等效于 getQueryObjectuiv/2
。
这些命令返回由 Id
指定的查询对象的选定参数。gl:getQueryObject()
在 Params
中返回由 Id
指定的查询对象的选定参数。gl:getQueryBufferObject()
通过将其写入 Buffer
在 Offset
指定的字节偏移量的数据存储中,返回由 Id
指定的查询对象的选定参数。
gl:getRenderbufferParameteriv/2
和 glGetNamedRenderbufferParameteriv
查询指定渲染缓冲区对象的参数。
gl:getSamplerParameter()
在 Params
中返回指定为 Pname
的采样器参数的值。Sampler
定义目标采样器,并且必须是先前调用 gl:genSamplers/1
返回的现有采样器对象的名称。Pname
接受与 gl:samplerParameter()
相同的符号,并且具有相同的解释。
gl:getShaderInfoLog/2
返回指定着色器对象的信息日志。当编译着色器时,会修改着色器对象的信息日志。返回的字符串将以 null 结尾。
gl:getShader()
在 Params
中返回特定着色器对象的参数值。定义了以下参数
-spec getShaderPrecisionFormat(Shadertype :: enum(), Precisiontype :: enum()) -> {Range :: {i(), i()}, Precision :: i()}.
gl:getShaderPrecisionFormat/2
检索在指定的着色器类型中,实现对不同数值格式的数量表示的数值范围和精度。ShaderType
指定要检索其数值精度和范围的着色器类型,并且必须是 ?GL_VERTEX_SHADER
或 ?GL_FRAGMENT_SHADER
之一。PrecisionType
指定要查询的数值格式,并且必须是 ?GL_LOW_FLOAT
、?GL_MEDIUM_FLOAT
、?GL_HIGH_FLOAT
、?GL_LOW_INT
、?GL_MEDIUM_INT
或 ?GL_HIGH_INT
之一。
gl:getShaderSource/2
返回由 Shader
指定的着色器对象中的源代码字符串的串联。着色器对象的源代码字符串是先前调用 gl:shaderSource/2
的结果。该函数返回的字符串将以 null 结尾。
等效于 getStringi/2
。
gl:getString/1
返回一个指向静态字符串的指针,该字符串描述当前 GL 连接的某些方面。Name
可以是以下之一
gl:getSubroutineIndex/3
返回附加到程序对象的着色器阶段中的子例程统一变量的索引。Program
包含附加着色器的程序的名称。Shadertype
指定要从中查询着色器子例程索引的阶段。Name
包含要查询的子例程统一变量的 null 结尾的名称。
gl:getSubroutineUniformLocation/3
返回附加到 Program
的类型为 Shadertype
的着色器阶段中子例程统一变量 Name
的位置,其行为与其他方面与 gl:getUniformLocation/2
相同。
gl:getSynciv/3
检索同步对象的属性。Sync
指定要检索其属性的同步对象的名称。
等效于 getTexEnviv/2
。
gl:getTexEnv()
在 Params
中返回使用 gl:texEnv()
指定的纹理环境的选定值。Target
指定纹理环境。
等效于 getTexGeniv/2
。
等效于 getTexGeniv/2
。
gl:getTexGen()
在 Params
中返回使用 gl:texGen()
指定的纹理坐标生成函数的选定参数。Coord
使用符号常量 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
来命名 ( s
、t
、r
、q
) 纹理坐标之一。
-spec getTexImage(Target :: enum(), Level :: i(), Format :: enum(), Type :: enum(), Pixels :: mem()) -> ok.
gl:getTexImage/5
、glGetnTexImage
和 glGetTextureImage
函数将纹理图像返回到 Pixels
中。对于 gl:getTexImage/5
和 glGetnTexImage
,Target
指定所需的纹理图像是 gl:texImage1D/8
(?GL_TEXTURE_1D
)、gl:texImage2D/9
(?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_2D
或任何 ?GL_TEXTURE_CUBE_MAP_*
) 或 gl:texImage3D/10
(?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP_ARRAY
) 指定的图像。对于 glGetTextureImage
,Texture
指定纹理对象名称。除了 gl:getTexImage/5
和 glGetnTexImage
接受的纹理类型之外,该函数还接受立方体贴图纹理对象(有效目标为 ?GL_TEXTURE_CUBE_MAP
)。Level
指定所需图像的详细级别编号。Format
和 Type
指定所需图像数组的格式和类型。有关 Format
和 Type
参数的可接受值的描述,请参见 gl:texImage1D/8
的参考页。对于 glGetnTexImage 和 glGetTextureImage 函数,bufSize 指示接收检索到的像素数据的缓冲区大小。glGetnTexImage
和 glGetTextureImage
写入 Pixels
的字节数不超过 BufSize
。
gl:getTexLevelParameterfv/3
, gl:getTexLevelParameteriv/3
, glGetTextureLevelParameterfv
和 glGetTextureLevelParameteriv
在 Params
中返回特定细节层次值(由 Level
指定)的纹理参数值。 对于前两个函数,Target
定义目标纹理,可以是 ?GL_TEXTURE_1D
,?GL_TEXTURE_2D
,?GL_TEXTURE_3D
,?GL_PROXY_TEXTURE_1D
,?GL_PROXY_TEXTURE_2D
,?GL_PROXY_TEXTURE_3D
,?GL_TEXTURE_CUBE_MAP_POSITIVE_X
,?GL_TEXTURE_CUBE_MAP_NEGATIVE_X
,?GL_TEXTURE_CUBE_MAP_POSITIVE_Y
,?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
,?GL_TEXTURE_CUBE_MAP_POSITIVE_Z
,?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
或 ?GL_PROXY_TEXTURE_CUBE_MAP
。 后两个函数接收一个 Texture
参数,该参数指定纹理对象的名称。
等效于 getTexParameteriv/2
。
等效于 getTexParameteriv/2
。
等效于 getTexParameteriv/2
。
gl:getTexParameter()
和 glGetTextureParameter
在 Params
中返回指定为 Pname
的纹理参数的一个或多个值。Target
定义目标纹理。?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
分别指定一维、二维或三维纹理,一维数组、二维数组、矩形、立方体贴图或立方体贴图数组、二维多重采样或二维多重采样数组纹理。Pname
接受与 gl:texParameter()
相同的符号,并具有相同的解释。
-spec getTransformFeedbackVarying(Program :: i(), Index :: i(), BufSize :: i()) -> {Size :: i(), Type :: enum(), Name :: string()}.
可以通过调用 gl:getTransformFeedbackVarying/3
来检索链接程序中将在变换反馈期间捕获的可变变量集的相关信息。gl:getTransformFeedbackVarying/3
提供有关由 Index
选择的可变变量的信息。 Index
为 0 选择传递给 gl:transformFeedbackVaryings/3
的 Varyings
数组中指定的第一个可变变量,Index
的值为 ?GL_TRANSFORM_FEEDBACK_VARYINGS
减一时选择最后一个这样的变量。
gl:getUniformBlockIndex/2
检索 Program
中统一块的索引。
等效于 getUniformuiv/2
。
等效于 getUniformuiv/2
。
-spec getUniformIndices(Program :: i(), UniformNames :: [unicode:chardata()]) -> [i()].
gl:getUniformIndices/2
检索 Program
中多个 uniform 变量的索引。
-spec getUniformiv(Program :: i(), Location :: i()) -> {i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i()}.
等效于 getUniformuiv/2
。
glGetUniformLocation
返回一个整数,表示程序对象中特定 uniform 变量的位置。 Name
必须是一个不包含空格的空终止字符串。Name
必须是 Program
中一个活跃的 uniform 变量名,它不是结构体、结构体数组或向量或矩阵的子组件。如果 Name
不对应于 Program
中的活跃 uniform 变量,如果 Name
以保留前缀“gl_”开头,或者如果 Name
与原子计数器或命名的 uniform 块关联,则此函数返回 -1。
-spec getUniformSubroutineuiv(Shadertype :: enum(), Location :: i()) -> {i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i()}.
gl:getUniformSubroutine()
检索当前程序着色器阶段 Shadertype
中位置 Location
处的子例程 uniform 的值。 Location
必须小于当前正在着色器阶段 Shadertype
中使用的着色器的 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
的值。子例程 uniform 的值在 Values
中返回。
-spec getUniformuiv(Program :: i(), Location :: i()) -> {i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i()}.
gl:getUniform()
和 glGetnUniform
在 Params
中返回指定 uniform 变量的一个或多个值。由 Location
指定的 uniform 变量的类型确定返回的值的数量。如果 uniform 变量在着色器中定义为布尔值、整数或浮点数,则将返回单个值。如果将其定义为 vec2、ivec2 或 bvec2,则将返回两个值。如果将其定义为 vec3、ivec3 或 bvec3,则将返回三个值,依此类推。要查询声明为数组的 uniform 变量中存储的值,请为数组的每个元素调用 gl:getUniform()
。要查询声明为结构的 uniform 变量中存储的值,请为结构中的每个字段调用 gl:getUniform()
。声明为矩阵的 uniform 变量的值将以列优先顺序返回。
等效于 getVertexAttribiv/2
。
等效于 getVertexAttribiv/2
。
等效于 getVertexAttribiv/2
。
等效于 getVertexAttribiv/2
。
gl:getVertexAttrib()
在 Params
中返回通用顶点属性参数的值。要查询的通用顶点属性由 Index
指定,要查询的参数由 Pname
指定。
等效于 getVertexAttribiv/2
。
当有解释空间时,可以使用提示来控制 GL 行为的某些方面。提示使用两个参数指定。Target
是一个符号常量,指示要控制的行为,Mode
是另一个符号常量,指示所需的行为。每个 Target
的初始值为 ?GL_DONT_CARE
。Mode
可以是以下之一
当启用 ?GL_HISTOGRAM
时,RGBA 颜色分量将通过限制在 [0,1] 范围内、乘以直方图表的宽度并四舍五入到最接近的整数来转换为直方图表索引。然后递增由 RGBA 索引选择的表条目。(如果直方图表的内部格式包括亮度,则从 R 颜色分量导出的索引确定要递增的亮度表条目。)如果直方图表条目递增超出其最大值,则其值变为未定义。(这不是错误。)
-spec indexd(C :: f()) -> ok.
等效于 indexubv/1
。
-spec indexdv({C :: f()}) -> ok.
等效于 indexubv/1
。
-spec indexf(C :: f()) -> ok.
等效于 indexubv/1
。
-spec indexfv({C :: f()}) -> ok.
等效于 indexubv/1
。
-spec indexi(C :: i()) -> ok.
等效于 indexubv/1
。
-spec indexiv({C :: i()}) -> ok.
等效于 indexubv/1
。
-spec indexMask(Mask :: i()) -> ok.
gl:indexMask/1
控制颜色索引缓冲区中各个位的写入。 Mask
的最低有效 n 位(其中 n 是颜色索引缓冲区中的位数)指定一个掩码。如果掩码中出现 1(一),则可以写入颜色索引缓冲区(或多个缓冲区)中的相应位。如果出现 0(零),则会写保护相应的位。
gl:indexPointer/3
指定渲染时要使用的颜色索引数组的位置和数据格式。Type
指定每个颜色索引的数据类型,Stride
指定从一个颜色索引到下一个颜色索引的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。
-spec indexs(C :: i()) -> ok.
等效于 indexubv/1
。
-spec indexsv({C :: i()}) -> ok.
等效于 indexubv/1
。
-spec indexub(C :: i()) -> ok.
等效于 indexubv/1
。
-spec indexubv({C :: i()}) -> ok.
gl:index()
更新当前(单值)颜色索引。它接受一个参数,即当前颜色索引的新值。
-spec initNames() -> ok.
名称堆栈在选择模式期间使用,以允许唯一地标识渲染命令集。 它由一组有序的无符号整数组成。gl:initNames/0
使名称堆栈初始化为其默认的空状态。
gl:interleavedArrays/3
允许您指定和启用各个颜色、法线、纹理和顶点数组,这些数组的元素是较大的聚合数组元素的一部分。 对于某些实现,这比单独指定数组更有效。
-spec invalidateBufferData(Buffer :: i()) -> ok.
gl:invalidateBufferData/1
使缓冲区对象的数据存储的所有内容无效。 无效后,缓冲区数据存储的内容变为未定义。
gl:invalidateBufferSubData/3
使缓冲区对象的数据存储的全部或部分内容无效。 无效后,缓冲区数据存储指定范围内的内容变为未定义。范围的开始由 Offset
给出,其大小由 Length
给出,均以基本机器单位测量。
gl:invalidateFramebuffer/2
和 glInvalidateNamedFramebufferData
使帧缓冲区的指定附件集的全部内容无效。
-spec invalidateSubFramebuffer(Target :: enum(), Attachments :: [enum()], X :: i(), Y :: i(), Width :: i(), Height :: i()) -> ok.
gl:invalidateSubFramebuffer/6
和 glInvalidateNamedFramebufferSubData
使帧缓冲区的指定附件集的指定区域的内容无效。
gl:invalidateTexSubImage/8
使纹理图像的所有内容无效。Texture
和 Level
指示正在使哪个纹理图像无效。执行此命令后,纹理图像中的数据将具有未定义的值。
-spec invalidateTexSubImage(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i().
gl:invalidateTexSubImage/8
使纹理图像的全部或部分内容无效。Texture
和 Level
指示正在使哪个纹理图像无效。执行此命令后,该子区域中的数据将具有未定义的值。Xoffset
、Yoffset
、Zoffset
、Width
、Height
和 Depth
的解释方式与 gl:texSubImage3D/11
中的解释方式相同。对于不具有某些维度的纹理目标,此命令将这些维度视为大小为 1。例如,要使二维纹理的一部分无效,应用程序应使用 Zoffset
等于零和 Depth
等于 1。立方体贴图纹理被视为 z 维度中的六个切片的数组,其中 Zoffset
的值被解释为指定面 ?GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ Zoffset
。
-spec isBuffer(Buffer :: i()) -> 0 | 1.
gl:isBuffer/1
如果 Buffer
当前是一个缓冲区对象的名称,则返回 ?GL_TRUE
。如果 Buffer
为零,或者是一个非零值,但当前不是缓冲区对象的名称,或者发生错误,则 gl:isBuffer/1
返回 ?GL_FALSE
。
-spec isEnabled(Cap :: enum()) -> 0 | 1.
等同于 isEnabledi/2
。
如果 Cap
是一个已启用的功能,则 gl:isEnabled/1
返回 ?GL_TRUE
,否则返回 ?GL_FALSE
。可以使用 gl:isEnabledi/2
测试已索引的布尔状态。对于 gl:isEnabledi/2
,Index
指定要测试的功能的索引。Index
必须介于零和 Cap
的索引功能计数之间。最初,除 ?GL_DITHER
之外的所有功能都已禁用;?GL_DITHER
最初是启用的。
-spec isFramebuffer(Framebuffer :: i()) -> 0 | 1.
如果 Framebuffer
当前是一个帧缓冲区对象的名称,则 gl:isFramebuffer/1
返回 ?GL_TRUE
。如果 Framebuffer
为零,或者 ?framebuffer
不是帧缓冲区对象的名称,或者发生错误,则 gl:isFramebuffer/1
返回 ?GL_FALSE
。如果 Framebuffer
是由 gl:genFramebuffers/1
返回的名称,但尚未通过调用 gl:bindFramebuffer/2
进行绑定,则该名称不是帧缓冲区对象,并且 gl:isFramebuffer/1
返回 ?GL_FALSE
。
-spec isList(List :: i()) -> 0 | 1.
如果 List
是显示列表的名称,则 gl:isList/1
返回 ?GL_TRUE
,如果不是,或者发生错误,则返回 ?GL_FALSE
。
-spec isProgram(Program :: i()) -> 0 | 1.
如果 Program
是先前使用 gl:createProgram/0
创建且尚未通过 gl:deleteProgram/1
删除的程序对象的名称,则 gl:isProgram/1
返回 ?GL_TRUE
。如果 Program
为零,或者是一个非零值,但不是程序对象的名称,或者发生错误,则 gl:isProgram/1
返回 ?GL_FALSE
。
-spec isProgramPipeline(Pipeline :: i()) -> 0 | 1.
如果 Pipeline
当前是一个程序管线对象的名称,则 gl:isProgramPipeline/1
返回 ?GL_TRUE
。如果 Pipeline
为零,或者 ?pipeline
不是程序管线对象的名称,或者发生错误,则 gl:isProgramPipeline/1
返回 ?GL_FALSE
。如果 Pipeline
是由 gl:genProgramPipelines/1
返回的名称,但尚未通过调用 gl:bindProgramPipeline/1
进行绑定,则该名称不是程序管线对象,并且 gl:isProgramPipeline/1
返回 ?GL_FALSE
。
-spec isQuery(Id :: i()) -> 0 | 1.
如果 Id
当前是一个查询对象的名称,则 gl:isQuery/1
返回 ?GL_TRUE
。如果 Id
为零,或者是一个非零值,但当前不是查询对象的名称,或者发生错误,则 gl:isQuery/1
返回 ?GL_FALSE
。
-spec isRenderbuffer(Renderbuffer :: i()) -> 0 | 1.
如果 Renderbuffer
当前是一个渲染缓冲区对象的名称,则 gl:isRenderbuffer/1
返回 ?GL_TRUE
。如果 Renderbuffer
为零,或者 Renderbuffer
不是渲染缓冲区对象的名称,或者发生错误,则 gl:isRenderbuffer/1
返回 ?GL_FALSE
。如果 Renderbuffer
是由 gl:genRenderbuffers/1
返回的名称,但尚未通过调用 gl:bindRenderbuffer/2
或 gl:framebufferRenderbuffer/4
进行绑定,则该名称不是渲染缓冲区对象,并且 gl:isRenderbuffer/1
返回 ?GL_FALSE
。
-spec isSampler(Sampler :: i()) -> 0 | 1.
如果 Id
当前是一个采样器对象的名称,则 gl:isSampler/1
返回 ?GL_TRUE
。如果 Id
为零,或者是一个非零值,但当前不是采样器对象的名称,或者发生错误,则 gl:isSampler/1
返回 ?GL_FALSE
。
-spec isShader(Shader :: i()) -> 0 | 1.
如果 Shader
是先前使用 gl:createShader/1
创建且尚未通过 gl:deleteShader/1
删除的着色器对象的名称,则 gl:isShader/1
返回 ?GL_TRUE
。如果 Shader
为零,或者是一个非零值,但不是着色器对象的名称,或者发生错误,则 glIsShader
返回 ?GL_FALSE
。
-spec isSync(Sync :: i()) -> 0 | 1.
如果 Sync
当前是同步对象的名称,则 gl:isSync/1
返回 ?GL_TRUE
。如果 Sync
不是同步对象的名称,或者发生错误,则 gl:isSync/1
返回 ?GL_FALSE
。请注意,零不是同步对象的名称。
-spec isTexture(Texture :: i()) -> 0 | 1.
如果 Texture
当前是纹理的名称,则 gl:isTexture/1
返回 ?GL_TRUE
。如果 Texture
为零,或者是一个非零值,但当前不是纹理的名称,或者发生错误,则 gl:isTexture/1
返回 ?GL_FALSE
。
-spec isTransformFeedback(Id :: i()) -> 0 | 1.
如果 Id
当前是一个变换反馈对象的名称,则 gl:isTransformFeedback/1
返回 ?GL_TRUE
。如果 Id
为零,或者 ?id
不是变换反馈对象的名称,或者发生错误,则 gl:isTransformFeedback/1
返回 ?GL_FALSE
。如果 Id
是由 gl:genTransformFeedbacks/1
返回的名称,但尚未通过调用 gl:bindTransformFeedback/2
进行绑定,则该名称不是变换反馈对象,并且 gl:isTransformFeedback/1
返回 ?GL_FALSE
。
-spec isVertexArray(Array :: i()) -> 0 | 1.
如果 Array
当前是一个顶点数组对象的名称,则 gl:isVertexArray/1
返回 ?GL_TRUE
。如果 Array
为零,或者 Array
不是顶点数组对象的名称,或者发生错误,则 gl:isVertexArray/1
返回 ?GL_FALSE
。如果 Array
是由 gl:genVertexArrays/1
返回的名称,但尚未通过调用 gl:bindVertexArray/1
进行绑定,则该名称不是顶点数组对象,并且 gl:isVertexArray/1
返回 ?GL_FALSE
。
等同于 lightiv/3
。
等同于 lightiv/3
。
等同于 lightiv/3
。
gl:light()
设置各个光源参数的值。Light
命名光源,并且是 ?GL_LIGHT
i 形式的符号名称,其中 i 的范围从 0 到 ?GL_MAX_LIGHTS
- 1 的值。Pname
通过符号名称指定十个光源参数之一。Params
是单个值或指向包含新值的数组的指针。
等同于 lightModeliv/2
。
等同于 lightModeliv/2
。
等同于 lightModeliv/2
。
gl:lightModel()
设置光照模型参数。Pname
命名参数,Params
给出新值。有三个光照模型参数
线条点画会屏蔽由光栅化产生的某些片段;这些片段不会被绘制。屏蔽是通过使用三个参数实现的:16 位线条点画模式 Pattern
、重复计数 Factor
和整数点画计数器 s。
-spec lineWidth(Width :: f()) -> ok.
gl:lineWidth/1
指定别名线和抗锯齿线的栅格化宽度。使用 1 以外的线宽具有不同的效果,具体取决于是否启用了线抗锯齿。要启用和禁用线抗锯齿,请使用参数 ?GL_LINE_SMOOTH
调用 gl:enable/1
和 gl:disable/1
。线抗锯齿最初是禁用的。
-spec linkProgram(Program :: i()) -> ok.
gl:linkProgram/1
链接由 Program
指定的程序对象。如果任何类型为 ?GL_VERTEX_SHADER
的着色器对象附加到 Program
,则它们将用于创建将在可编程顶点处理器上运行的可执行文件。如果任何类型为 ?GL_GEOMETRY_SHADER
的着色器对象附加到 Program
,则它们将用于创建将在可编程几何处理器上运行的可执行文件。如果任何类型为 ?GL_FRAGMENT_SHADER
的着色器对象附加到 Program
,则它们将用于创建将在可编程片段处理器上运行的可执行文件。
-spec listBase(Base :: i()) -> ok.
gl:callLists/1
指定偏移量数组。显示列表名称是通过将 Base
添加到每个偏移量生成的。执行引用有效显示列表的名称;其他名称被忽略。
-spec loadIdentity() -> ok.
gl:loadIdentity/0
将当前矩阵替换为单位矩阵。它在语义上等效于使用单位矩阵调用 gl:loadMatrix()
-spec loadMatrixd(M :: matrix()) -> ok.
等同于 loadMatrixf/1
。
-spec loadMatrixf(M :: matrix()) -> ok.
gl:loadMatrix()
用 M
指定的元素替换当前矩阵。当前矩阵是投影矩阵、模型视图矩阵或纹理矩阵,具体取决于当前的矩阵模式(参见 gl:matrixMode/1
)。
-spec loadName(Name :: i()) -> ok.
在选择模式期间,使用名称堆栈来唯一标识渲染命令集。它由一组有序的无符号整数组成,初始为空。
-spec loadTransposeMatrixd(M :: matrix()) -> ok.
-spec loadTransposeMatrixf(M :: matrix()) -> ok.
gl:loadTransposeMatrix()
用 M
指定的元素替换当前矩阵。当前矩阵是投影矩阵、模型视图矩阵或纹理矩阵,具体取决于当前的矩阵模式(参见 gl:matrixMode/1
)。
-spec logicOp(Opcode :: enum()) -> ok.
gl:logicOp/1
指定一个逻辑操作,当启用时,它将在传入的 RGBA 颜色和帧缓冲区中相应位置的 RGBA 颜色之间应用。要启用或禁用逻辑操作,请使用符号常量 ?GL_COLOR_LOGIC_OP
调用 gl:enable/1
和 gl:disable/1
。初始值是禁用状态。
-spec map1d(Target :: enum(), U1 :: f(), U2 :: f(), Stride :: i(), Order :: i(), Points :: binary()) -> ok.
等同于 map1f/6
。
-spec map1f(Target :: enum(), U1 :: f(), U2 :: f(), Stride :: i(), Order :: i(), Points :: binary()) -> ok.
求值器提供了一种使用多项式或有理多项式映射来生成顶点、法线、纹理坐标和颜色的方法。求值器生成的值被发送到 GL 处理的后续阶段,就像它们是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈现的一样,只是生成的值不更新当前的法线、纹理坐标或颜色。
-spec map2d(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder, Points) -> ok when Target :: enum(), U1 :: f(), U2 :: f(), Ustride :: i(), Uorder :: i(), V1 :: f(), V2 :: f(), Vstride :: i(), Vorder :: i(), Points :: binary().
等同于 map2f/10
。
-spec map2f(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder, Points) -> ok when Target :: enum(), U1 :: f(), U2 :: f(), Ustride :: i(), Uorder :: i(), V1 :: f(), V2 :: f(), Vstride :: i(), Vorder :: i(), Points :: binary().
求值器提供了一种使用多项式或有理多项式映射来生成顶点、法线、纹理坐标和颜色的方法。求值器生成的值被发送到 GL 处理的后续阶段,就像它们是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈现的一样,只是生成的值不更新当前的法线、纹理坐标或颜色。
等同于 mapGrid2f/6
。
等同于 mapGrid2f/6
。
等同于 mapGrid2f/6
。
gl:mapGrid()
和 gl:evalMesh()
一起使用,以有效地生成和计算一系列均匀间隔的映射域值。 gl:evalMesh()
步进一维或二维网格的整数域,该范围是 glMap1
和 glMap2
指定的计算映射的域。
等同于 materialiv/3
。
等同于 materialiv/3
。
等同于 materialiv/3
。
gl:material()
将值分配给材质参数。有两组匹配的材质参数。一组是 front-facing
集,用于为点、线、位图和所有多边形(当禁用双面照明时)或仅为正面多边形(当启用双面照明时)着色。另一组 back-facing
仅在启用双面照明时用于为背面多边形着色。有关单面和双面照明计算的详细信息,请参阅 gl:lightModel()
参考页。
-spec matrixMode(Mode :: enum()) -> ok.
gl:matrixMode/1
设置当前矩阵模式。 Mode
可以采用四个值之一
-spec memoryBarrier(Barriers :: i()) -> ok.
-spec memoryBarrierByRegion(Barriers :: i()) -> ok.
gl:memoryBarrier/1
定义一个屏障,该屏障对在命令之前发出的内存事务相对于在屏障之后发出的内存事务进行排序。为了进行此排序,由着色器执行的内存事务被认为是由触发着色器执行的渲染命令发出的。Barriers
是一个位字段,指示与着色器存储同步的操作集; Barriers
中使用的位如下
当启用 ?GL_MINMAX
时,传入像素的 RGBA 分量将与每个分量的最小值和最大值进行比较,这些值存储在两元素的 minmax 表中。(第一个元素存储最小值,第二个元素存储最大值。)如果像素分量大于最大元素中的相应分量,则使用像素分量值更新最大元素。如果像素分量小于最小元素中的相应分量,则使用像素分量值更新最小元素。(在这两种情况下,如果 minmax 表的内部格式包含亮度,则传入像素的 R 颜色分量将用于比较。)可以通过调用 gl:getMinmax/5
稍后检索 minmax 表的内容。可以通过分别调用 gl:enable/1
或 gl:disable/1
并使用 ?GL_MINMAX
的参数来启用或禁用 minmax 操作。
-spec minSampleShading(Value :: f()) -> ok.
gl:minSampleShading/1
指定在覆盖的像素内对样本进行着色的速率。通过使用参数 ?GL_SAMPLE_SHADING
调用 gl:enable/1
来启用样本率着色。如果禁用 ?GL_MULTISAMPLE
或 ?GL_SAMPLE_SHADING
,则样本着色不起作用。否则,实现必须为每个覆盖的片段提供至少与 Value
乘以 Samples
指定的唯一颜色值一样多的唯一颜色值,其中 Samples
是当前帧缓冲区的 ?GL_SAMPLES
的值。为每个覆盖的片段生成至少 1 个样本。
-spec multiDrawArrays(Mode :: enum(), First :: [integer()] | mem(), Count :: [integer()] | mem()) -> ok.
gl:multiDrawArrays/3
使用很少的子例程调用指定多组几何图元。您可以预先指定单独的顶点、法线和颜色数组,而不是调用 GL 过程来传递每个单独的顶点、法线、纹理坐标、边缘标志或颜色,然后使用它们通过单次调用 gl:multiDrawArrays/3
来构造一系列图元。
-spec multiDrawArraysIndirect(Mode :: enum(), Indirect :: offset() | mem(), Drawcount :: i(), Stride :: i()) -> ok.
gl:multiDrawArraysIndirect/4
使用很少的子例程调用指定多个几何图元。gl:multiDrawArraysIndirect/4
的行为类似于多次调用 gl:drawArraysInstancedBaseInstance/5
,但对 gl:drawArraysInstancedBaseInstance/5
的每次调用的参数都存储在 Indirect
给出的地址的内存中的数组中,由 Stride
指定的基本机器单位中的步幅分隔。如果 Stride
为零,则假定数组在内存中紧密打包。
-spec multiDrawArraysIndirectCount(Mode, Indirect, Drawcount, Maxdrawcount, Stride) -> ok when Mode :: enum(), Indirect :: offset() | mem(), Drawcount :: i(), Maxdrawcount :: i(), Stride :: i().
无可用文档。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
等同于 multiTexCoord4sv/2
。
gl:multiTexCoord()
指定一维、二维、三维或四维的纹理坐标。 gl:multiTexCoord1()
将当前纹理坐标设置为 (s 0 0 1);调用 gl:multiTexCoord2()
会将其设置为 (s t 0 1)。类似地, gl:multiTexCoord3()
将纹理坐标指定为 (s t r 1),而 gl:multiTexCoord4()
显式定义所有四个分量为 (s t r q)。
-spec multMatrixd(M :: matrix()) -> ok.
等同于 multMatrixf/1
。
-spec multMatrixf(M :: matrix()) -> ok.
gl:multMatrix()
将当前矩阵与使用 M
指定的矩阵相乘,并用乘积替换当前矩阵。
-spec multTransposeMatrixd(M :: matrix()) -> ok.
-spec multTransposeMatrixf(M :: matrix()) -> ok.
gl:multTransposeMatrix()
将当前矩阵与使用 M
指定的矩阵相乘,并用乘积替换当前矩阵。
显示列表是已存储以供后续执行的 GL 命令组。显示列表使用 gl:newList/2
创建。所有后续命令都按发出顺序放置在显示列表中,直到调用 gl:endList/0
为止。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
等同于 normal3sv/1
。
只要发出 gl:normal()
,当前法线就会设置为给定的坐标。字节、短整型或整数参数会使用线性映射转换为浮点格式,该映射将最正的可表示整数值映射为 1.0,并将最负的可表示整数值映射为 -1.0。
gl:normalPointer/3
指定渲染时使用的法线数组的位置和数据格式。Type
指定每个法线坐标的数据类型,Stride
指定从一个法线到下一个法线的字节跨度,允许将顶点和属性打包到单个数组或存储在单独的数组中。(在某些实现中,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
gl:objectPtrLabel/3
标记由 Ptr
标识的同步对象。
-spec ortho(Left :: f(), Right :: f(), Bottom :: f(), Top :: f(), Near_val :: f(), Far_val :: f()) -> ok.
gl:ortho/6
描述产生平行投影的变换。当前矩阵(请参阅 gl:matrixMode/1
)乘以该矩阵,结果替换当前矩阵,如同使用以下矩阵作为参数调用 gl:multMatrix()
一样
-spec passThrough(Token :: f()) -> ok.
等效于 patchParameteri/2
。
gl:patchParameter()
指定将用于面片图元的参数。Pname
指定要修改的参数,并且必须是 ?GL_PATCH_VERTICES
、?GL_PATCH_DEFAULT_OUTER_LEVEL
或 ?GL_PATCH_DEFAULT_INNER_LEVEL
。对于 gl:patchParameteri/2
,Value
指定由 Pname
指定的参数的新值。对于 gl:patchParameterfv/2
,Values
指定包含由 Pname
指定的参数的新值的数组的地址。
-spec pauseTransformFeedback() -> ok.
gl:pauseTransformFeedback/0
暂停当前活动的变换反馈对象上的变换反馈操作。当变换反馈操作暂停时,变换反馈仍然被认为是活动的,并且更改与该对象相关的大多数变换反馈状态会导致错误。但是,可以在变换反馈暂停时绑定新的变换反馈对象。
等效于 pixelMapusv/3
。
等效于 pixelMapusv/3
。
gl:pixelMap()
设置转换表或 maps
,供 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
使用。此外,如果支持 ARB_imaging 子集,则例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
也使用。这些映射的用法在 gl:pixelTransfer()
参考页中完整描述,并在像素和纹理图像命令的参考页中部分描述。本参考页中仅描述映射的规范。
等效于 pixelStorei/2
。
gl:pixelStore()
设置影响后续 gl:readPixels/7
操作的像素存储模式,以及纹理图案的解包(请参阅 gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
、gl:texSubImage3D/11
)、gl:compressedTexImage1D/7
、gl:compressedTexImage2D/8
、gl:compressedTexImage3D/9
、gl:compressedTexSubImage1D/7
、gl:compressedTexSubImage2D/9
或 gl:compressedTexSubImage1D/7
。
等效于 pixelTransferi/2
。
gl:pixelTransfer()
设置像素传输模式,该模式影响后续的 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
命令。此外,如果支持 ARB_imaging 子集,则例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
也会受到影响。像素传输模式指定的算法在从帧缓冲区读取像素后(gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
和 gl:readPixels/7
),或从客户端内存解包后(gl:drawPixels/5
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
)对像素进行操作。像素传输操作按照相同的顺序和相同的方式进行,无论哪个命令导致像素操作。像素存储模式(请参阅 gl:pixelStore()
)控制从客户端内存读取的像素的解包以及写回客户端内存的像素的打包。
gl:pixelZoom/2
指定 x 和 y 缩放因子的值。在执行 gl:drawPixels/5
或 gl:copyPixels/5
期间,如果 ( xr, yr) 是当前的栅格位置,并且给定元素位于像素矩形的第 m 行和第 n 列,则中心位于以下矩形中的像素
等效于 pointParameteriv/2
。
等效于 pointParameteriv/2
。
等效于 pointParameteriv/2
。
以下值可用于 Pname
-spec pointSize(Size :: f()) -> ok.
gl:pointSize/1
指定点的栅格化直径。如果禁用点大小模式(请参阅使用参数 ?GL_PROGRAM_POINT_SIZE
的 gl:enable/1
),则此值将用于栅格化点。否则,将使用写入着色语言内置变量 gl_PointSize 的值。
gl:polygonMode/2
控制用于栅格化的多边形的解释。Face
描述 Mode
应用于哪个多边形:正面和背面多边形 (?GL_FRONT_AND_BACK
)。多边形模式仅影响多边形的最终栅格化。特别是,在应用这些模式之前,多边形的顶点会被照亮,并且多边形会被裁剪并可能被剔除。
当启用 ?GL_POLYGON_OFFSET_FILL
、?GL_POLYGON_OFFSET_LINE
或 ?GL_POLYGON_OFFSET_POINT
时,每个片段的 depth
值将在从适当顶点的 depth
值插值后进行偏移。偏移的值为 factor×DZ+r×units,其中 DZ 是多边形相对于屏幕区域的深度变化测量值,r 是保证为给定实现产生可解析偏移的最小值。在执行深度测试之前,并在将值写入深度缓冲区之前添加偏移。
无可用文档。
-spec polygonStipple(Mask :: binary()) -> ok.
多边形点画,如线条点画(请参阅 gl:lineStipple/2
),会屏蔽栅格化产生的某些片段,从而创建图案。点画独立于多边形抗锯齿。
-spec popAttrib() -> ok.
等效于 pushAttrib/1
。
-spec popClientAttrib() -> ok.
等效于 pushClientAttrib/1
。
-spec popDebugGroup() -> ok.
等效于 pushDebugGroup/4
。
-spec popMatrix() -> ok.
等效于 pushMatrix/0
。
-spec popName() -> ok.
等效于 pushName/1
。
-spec primitiveRestartIndex(Index :: i()) -> ok.
gl:primitiveRestartIndex/1
指定在启用图元重启时特殊对待的顶点数组元素。这称为图元重启索引。
gl:prioritizeTextures/2
将 Priorities
中给出的 N
个纹理优先级分配给 Textures
中命名的 N
个纹理。
gl:programBinary/3
使用先前从 gl:getProgramBinary/2
返回的程序二进制文件加载程序对象。BinaryFormat
和 Binary
必须是先前调用 gl:getProgramBinary/2
返回的值,并且 Length
必须是 gl:getProgramBinary/2
返回的长度,或者在 Pname
设置为 ?GL_PROGRAM_BINARY_LENGTH
时调用 gl:getProgram()
返回的长度。如果未满足这些条件,则加载程序二进制文件将失败,并且 Program
的 ?GL_LINK_STATUS
将设置为 ?GL_FALSE
。
gl:programParameter()
为程序对象 Program
指定由 Pname
命名的参数的新值。
-spec programUniformMatrix4x3fv(Program, Location, Transpose, Value) -> ok when Program :: i(), Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
gl:programUniform()
修改 uniform 变量或 uniform 变量数组的值。要修改的 uniform 变量的位置由 Location
指定,它应该是 gl:getUniformLocation/2
返回的值。gl:programUniform()
操作由 Program
指定的程序对象。
-spec provokingVertex(Mode :: enum()) -> ok.
Flatshading
顶点着色器可变输出意味着为图元的每个顶点分配该输出的相同值。从中导出这些值的顶点称为 provoking vertex
,gl:provokingVertex/1
指定哪个顶点用作平面着色可变数据的来源。
-spec pushAttrib(Mask :: i()) -> ok.
gl:pushAttrib/1
接受一个参数,一个掩码,指示要保存在属性堆栈上的状态变量组。使用符号常量在掩码中设置位。Mask
通常通过指定几个这些常量的按位或来构造。特殊掩码 ?GL_ALL_ATTRIB_BITS
可用于保存所有可堆叠状态。
-spec pushClientAttrib(Mask :: i()) -> ok.
gl:pushClientAttrib/1
接受一个参数,一个掩码,指示要保存在客户端属性堆栈上的客户端状态变量组。使用符号常量在掩码中设置位。Mask
通常通过指定几个这些常量的按位或来构造。特殊掩码 ?GL_CLIENT_ALL_ATTRIB_BITS
可用于保存所有可堆叠客户端状态。
gl:pushDebugGroup/4
将由字符串 Message
描述的调试组推送到命令流中。Id
的值指定生成的消息的 ID。参数 Length
包含 Message
中的字符数。如果 Length
为负数,则表示 Message
包含一个以 null 结尾的字符串。消息具有指定的 Source
和 Id
,Type``?GL_DEBUG_TYPE_PUSH_GROUP
和 Severity``?GL_DEBUG_SEVERITY_NOTIFICATION
。GL 将在调试组堆栈的顶部放置一个新的调试组,该调试组继承先前驻留在调试组堆栈顶部的调试组的调试输出量控制。由于调试组是严格分层的,因此对调试输出量的任何其他控制都仅适用于活动调试组以及推送到活动调试组顶部的调试组。
-spec pushMatrix() -> ok.
每个矩阵模式都有一个矩阵堆栈。在 ?GL_MODELVIEW
模式下,堆栈深度至少为 32。在其他模式下,?GL_COLOR
、?GL_PROJECTION
和 ?GL_TEXTURE
,深度至少为 2。任何模式下的当前矩阵都是该模式堆栈顶部的矩阵。
-spec pushName(Name :: i()) -> ok.
在选择模式期间,使用名称堆栈来唯一标识渲染命令集。它由一组有序的无符号整数组成,初始为空。
gl:queryCounter/2
使 GL 将当前时间记录到名为 Id
的查询对象中。Target
必须是 ?GL_TIMESTAMP
。时间是在完全实现 GL 客户端和服务器状态以及帧缓冲区上的所有先前命令之后记录的。记录时间后,该对象的查询结果将被标记为可用。gl:queryCounter/2
计时器查询可以在目标为 ?GL_TIME_ELAPSED
的 gl:beginQuery/2
/ gl:endQuery/1
块内使用,它不会影响该查询对象的结果。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
等效于 rasterPos4sv/1
。
GL 在窗口坐标中维护一个 3D 位置。此位置称为光栅位置,用于定位像素和位图写入操作。它以亚像素精度维护。请参阅 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。
-spec readBuffer(Mode :: enum()) -> ok.
gl:readBuffer/1
指定一个颜色缓冲区作为后续 gl:readPixels/7
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
和 gl:copyTexSubImage3D/9
命令的来源。Mode
接受十二个或更多预定义值之一。在完全配置的系统中,?GL_FRONT
、?GL_LEFT
和 ?GL_FRONT_LEFT
都命名为前左缓冲区,?GL_FRONT_RIGHT
和 ?GL_RIGHT
命名为前右缓冲区,?GL_BACK_LEFT
和 ?GL_BACK
命名为后左缓冲区。此外,常量 ?GL_COLOR_ATTACHMENT``i
可用于指示第 i
个颜色附件,其中 i
的范围从零到 ?GL_MAX_COLOR_ATTACHMENTS
的值减一。
-spec readPixels(X, Y, Width, Height, Format, Type, Pixels) -> ok when X :: i(), Y :: i(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Pixels :: mem().
gl:readPixels/7
和 glReadnPixels
从帧缓冲区返回像素数据,从左下角位于位置 (X
, Y
) 的像素开始,到从位置 Data
开始的客户端内存中。多个参数控制像素数据在放入客户端内存之前的处理。这些参数使用 gl:pixelStore()
设置。此参考页描述了 gl:readPixels/7
和 glReadnPixels
对这些三个命令指定的大多数但并非全部参数的影响。
等效于 rectsv/2
。
等效于 rectsv/2
。
等效于 rectsv/2
。
等效于 rectsv/2
。
等效于 rectsv/2
。
等效于 rectsv/2
。
等效于 rectsv/2
。
gl:rect()
支持将矩形有效地指定为两个角点。每个矩形命令接受四个参数,这些参数组织为两个连续的 (x y) 坐标对,或两个指向数组的指针,每个数组包含一个 (x y) 对。生成的矩形在 z=0 平面中定义。
-spec releaseShaderCompiler() -> ok.
gl:releaseShaderCompiler/0
向实现提供一个提示,它可以释放与其着色器编译器关联的内部资源。gl:compileShader/1
随后可能会被调用,并且该实现在那时可能会重新分配先前通过调用 gl:releaseShaderCompiler/0
释放的资源。
-spec renderbufferStorage(Target :: enum(), Internalformat :: enum(), Width :: i(), Height :: i()) -> ok.
gl:renderbufferStorage/4
等效于调用 gl:renderbufferStorageMultisample/5
,并将 Samples
设置为零,而 glNamedRenderbufferStorage
等效于调用 glNamedRenderbufferStorageMultisample
,并将样本设置为零。
-spec renderbufferStorageMultisample(Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i()) -> ok.
gl:renderbufferStorageMultisample/5
和 glNamedRenderbufferStorageMultisample
建立渲染缓冲区对象的图像的数据存储、格式、维度和样本数。
gl:renderMode/1
设置光栅化模式。它接受一个参数,Mode
,它可以采用三个预定义值之一
-spec resetHistogram(Target :: enum()) -> ok.
gl:resetHistogram/1
将当前直方图表的所有元素重置为零。
-spec resetMinmax(Target :: enum()) -> ok.
gl:resetMinmax/1
将当前最小值最大值表的元素重置为其初始值:``最大'' 元素接收最小的可能分量值,而 ``最小'' 元素接收最大可能的组件值。
-spec resumeTransformFeedback() -> ok.
gl:resumeTransformFeedback/0
恢复当前活动变换反馈对象上的变换反馈操作。当变换反馈操作暂停时,变换反馈仍然被认为是活动的,并且更改与对象相关的大多数变换反馈状态会导致错误。但是,可以在暂停变换反馈时绑定一个新的变换反馈对象。
等效于 rotatef/4
。
gl:rotate()
产生一个围绕向量 (x y z) 旋转 Angle
度的旋转。当前矩阵(参见 gl:matrixMode/1
)与一个旋转矩阵相乘,并将乘积替换当前矩阵,如同调用了 gl:multMatrix()
,并使用以下矩阵作为其参数。
-spec sampleCoverage(Value :: clamp(), Invert :: 0 | 1) -> ok.
多重采样在多个与实现相关的子像素位置多次采样像素,以产生抗锯齿效果。如果启用了多重采样,它将透明地对点、线、多边形和图像进行抗锯齿处理。
gl:sampleMaski/2
设置多字采样掩码 ?GL_SAMPLE_MASK_VALUE
的一个 32 位子字。
等效于 samplerParameteriv/3
。
等效于 samplerParameteriv/3
。
等效于 samplerParameteriv/3
。
等效于 samplerParameteriv/3
。
等效于 samplerParameteriv/3
。
gl:samplerParameter()
将 Params
中的值或多个值赋给指定为 Pname
的采样器参数。Sampler
指定要修改的采样器对象,并且必须是先前调用 gl:genSamplers/1
返回的采样器对象的名称。以下符号在 Pname
中被接受
等效于 scalef/3
。
gl:scale()
产生沿 x
、y
和 z
轴的不均匀缩放。这三个参数指示沿三个轴中的每一个轴所需的缩放因子。
gl:scissor/4
在窗口坐标中定义一个称为剪刀盒的矩形。前两个参数 X
和 Y
指定该框的左下角。Width
和 Height
指定该框的宽度和高度。
gl:scissorArrayv/2
为每个视口在窗口坐标中定义称为剪刀盒的矩形。First
指定要修改的第一个剪刀盒的索引,Count
指定要修改的剪刀盒的数量。First
必须小于 ?GL_MAX_VIEWPORTS
的值,并且 First
+ Count
必须小于或等于 ?GL_MAX_VIEWPORTS
的值。V
指定一个整数数组的地址,该数组按顺序指定剪刀盒的左下角以及剪刀盒的宽度和高度。
等效于 scissorIndexedv/2
。
gl:scissorIndexed/5
为指定的视口定义剪刀盒。Index
指定要修改的剪刀盒的索引。Index
必须小于 ?GL_MAX_VIEWPORTS
的值。对于 gl:scissorIndexed/5
,Left
、Bottom
、Width
和 Height
分别指定剪刀盒的左侧、底部、宽度和高度(以像素为单位)。对于 gl:scissorIndexedv/2
,V
指定一个整数数组的地址,该数组按顺序指定剪刀盒的左下角以及剪刀盒的宽度和高度。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
等效于 secondaryColor3usv/1
。
GL 存储一个主四值 RGBA 颜色和一个次四值 RGBA 颜色(其中 alpha 始终设置为 0.0),这两个颜色与每个顶点关联。
-spec secondaryColorPointer(Size :: i(), Type :: enum(), Stride :: i(), Pointer :: offset() | mem()) -> ok.
gl:secondaryColorPointer/4
指定在渲染时使用的颜色分量数组的位置和数据格式。Size
指定每个颜色的分量数,并且必须为 3。Type
指定每个颜色分量的数据类型,Stride
指定从一种颜色到下一种颜色的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。
gl:selectBuffer/2
有两个参数:Buffer
是指向无符号整数数组的指针,Size
指示数组的大小。Buffer
在渲染模式为 ?GL_SELECT
时(参见 gl:renderMode/1
)从名称堆栈返回值(参见 gl:initNames/0
、gl:loadName/1
、gl:pushName/1
)。必须在启用选择模式之前发出 gl:selectBuffer/2
,并且在渲染模式为 ?GL_SELECT
时不得发出此命令。
-spec separableFilter2D(Target, Internalformat, Width, Height, Format, Type, Row, Column) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Row :: offset() | mem(), Column :: offset() | mem().
gl:separableFilter2D/8
从两个像素数组构建一个二维可分离卷积滤波器内核。
-spec shadeModel(Mode :: enum()) -> ok.
GL 图元可以具有平面或平滑着色。平滑着色(默认值)会导致在栅格化图元时插值计算出的顶点颜色,通常为每个生成的像素片段分配不同的颜色。平面着色仅选择一个顶点的计算颜色并将其分配给通过栅格化单个图元生成的所有像素片段。在任一情况下,如果启用了光照,则顶点的计算颜色是光照的结果,或者如果禁用了光照,则它是指定顶点时的当前颜色。
gl:shaderBinary/3
将预编译的着色器二进制代码加载到 Shaders
中给出的 Count
着色器对象中。Binary
指向存储在客户端内存中的 Length
字节的二进制着色器代码。BinaryFormat
指定预编译代码的格式。
-spec shaderSource(Shader :: i(), String :: [unicode:chardata()]) -> ok.
gl:shaderSource/2
将 Shader
中的源代码设置为由 String
指定的字符串数组中的源代码。先前存储在着色器对象中的任何源代码都将被完全替换。数组中的字符串数由 Count
指定。如果 Length
为 ?NULL
,则假定每个字符串都以 null 结尾。如果 Length
是 ?NULL
之外的值,则它指向一个数组,该数组包含 String
的每个对应元素的字符串长度。Length
数组中的每个元素可能包含相应字符串的长度(空字符不计为字符串长度的一部分),或者包含小于 0 的值以指示该字符串以 null 结尾。源代码字符串此时不进行扫描或解析;它们只是被复制到指定的着色器对象中。
-spec shaderStorageBlockBinding(Program :: i(), StorageBlockIndex :: i(), StorageBlockBinding :: i()) -> ok.
gl:shaderStorageBlockBinding/3
更改程序对象 Program
中分配的索引为 StorageBlockIndex
的活动着色器存储块。StorageBlockIndex
必须是 Program
中的活动着色器存储块索引。StorageBlockBinding
必须小于 ?GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
的值。如果成功,gl:shaderStorageBlockBinding/3
将指定 Program
将使用绑定到绑定点 StorageBlockBinding
的缓冲区对象的数据存储来读取和写入由 StorageBlockIndex
标识的着色器存储块中的缓冲区变量的值。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。首先使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。您可以使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像,以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
-spec stencilMask(Mask :: i()) -> ok.
gl:stencilMask/1
控制模板平面中各个位的写入。Mask
的最低有效 n 位(其中 n 是模板缓冲区中的位数)指定一个掩码。掩码中出现 1 的位置,可以写入模板缓冲区中的相应位。出现 0 的位置,相应的位将受到写保护。最初,所有位都启用了写入。
gl:stencilMaskSeparate/2
控制模板平面中各个位的写入。Mask
的最低有效位 n 指定一个掩码,其中 n 是模板缓冲区中的位数。掩码中出现 1 的位置,可以写入模板缓冲区中对应的位。出现 0 的位置,则对应的位受到写保护。最初,所有位都启用写入。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。您可以使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像,以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
与深度缓冲类似,模板测试启用和禁用每个像素的绘制。您可以使用 GL 绘制图元绘制到模板平面中,然后使用模板平面渲染几何图形和图像,以遮盖屏幕的某些部分。模板通常用于多通道渲染算法中,以实现特殊效果,例如贴花、轮廓和构造实体几何渲染。
等同于 textureBuffer/3
。
-spec texBufferRange(Target :: enum(), Internalformat :: enum(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
等同于 textureBufferRange/5
。
-spec texCoord1d(S :: f()) -> ok.
等同于 texCoord4sv/1
。
-spec texCoord1dv({S :: f()}) -> ok.
等同于 texCoord4sv/1
。
-spec texCoord1f(S :: f()) -> ok.
等同于 texCoord4sv/1
。
-spec texCoord1fv({S :: f()}) -> ok.
等同于 texCoord4sv/1
。
-spec texCoord1i(S :: i()) -> ok.
等同于 texCoord4sv/1
。
-spec texCoord1iv({S :: i()}) -> ok.
等同于 texCoord4sv/1
。
-spec texCoord1s(S :: i()) -> ok.
等同于 texCoord4sv/1
。
-spec texCoord1sv({S :: i()}) -> ok.
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
等同于 texCoord4sv/1
。
gl:texCoord()
指定一维、二维、三维或四维的纹理坐标。 gl:texCoord1()
将当前纹理坐标设置为 (s 0 0 1);调用 gl:texCoord2()
将它们设置为 (s t 0 1)。类似地,gl:texCoord3()
将纹理坐标指定为 (s t r 1),而 gl:texCoord4()
明确定义所有四个分量为 (s t r q)。
gl:texCoordPointer/4
指定渲染时使用的纹理坐标数组的位置和数据格式。 Size
指定每个纹理坐标集中的坐标数量,必须为 1、2、3 或 4。 Type
指定每个纹理坐标的数据类型,而 Stride
指定从一个纹理坐标集到下一个纹理坐标集的字节跨度,允许将顶点和属性打包到单个数组中或存储在单独的数组中。(在某些实现中,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
等同于 texEnviv/3
。
等同于 texEnviv/3
。
等同于 texEnviv/3
。
纹理环境指定在对片段进行纹理处理时如何解释纹理值。当 Target
为 ?GL_TEXTURE_FILTER_CONTROL
时,Pname
必须为 ?GL_TEXTURE_LOD_BIAS
。当 Target
为 ?GL_TEXTURE_ENV
时,Pname
可以是 ?GL_TEXTURE_ENV_MODE
、?GL_TEXTURE_ENV_COLOR
、?GL_COMBINE_RGB
、?GL_COMBINE_ALPHA
、?GL_RGB_SCALE
、?GL_ALPHA_SCALE
、?GL_SRC0_RGB
、?GL_SRC1_RGB
、?GL_SRC2_RGB
、?GL_SRC0_ALPHA
、?GL_SRC1_ALPHA
或 ?GL_SRC2_ALPHA
。
等同于 texGeniv/3
。
等同于 texGeniv/3
。
等同于 texGeniv/3
。
等同于 texGeniv/3
。
等同于 texGeniv/3
。
gl:texGen()
选择纹理坐标生成函数或为一个函数提供系数。 Coord
命名一个纹理坐标(s
、t
、r
、q
);它必须是符号 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
之一。Pname
必须是三个符号常量之一:?GL_TEXTURE_GEN_MODE
、?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
。如果 Pname
是 ?GL_TEXTURE_GEN_MODE
,则 Params
选择一种模式,即 ?GL_OBJECT_LINEAR
、?GL_EYE_LINEAR
、?GL_SPHERE_MAP
、?GL_NORMAL_MAP
或 ?GL_REFLECTION_MAP
之一。如果 Pname
是 ?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
,则 Params
包含相应纹理生成函数的系数。
-spec texImage1D(Target, Level, InternalFormat, Width, Border, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), InternalFormat :: i(), Width :: i(), Border :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。要启用和禁用一维纹理,请调用 gl:enable/1
和 gl:disable/1
,参数为 ?GL_TEXTURE_1D
。
-spec texImage2D(Target, Level, InternalFormat, Width, Height, Border, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), InternalFormat :: i(), Width :: i(), Height :: i(), Border :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
纹理允许着色器读取图像数组的元素。
texImage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations)
查看源代码-spec texImage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Fixedsamplelocations :: 0 | 1.
gl:texImage2DMultisample/6
建立多重采样纹理图像的数据存储、格式、尺寸和样本数量。
texImage3D(Target, Level, InternalFormat, Width, Height, Depth, Border, Format, Type, Pixels)
查看源代码-spec texImage3D(Target, Level, InternalFormat, Width, Height, Depth, Border, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), InternalFormat :: i(), Width :: i(), Height :: i(), Depth :: i(), Border :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。要启用和禁用三维纹理,请调用 gl:enable/1
和 gl:disable/1
,参数为 ?GL_TEXTURE_3D
。
texImage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations)
查看源代码-spec texImage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i(), Fixedsamplelocations :: 0 | 1.
gl:texImage3DMultisample/7
建立多重采样纹理图像的数据存储、格式、尺寸和样本数量。
等同于 texParameteriv/3
。
等同于 texParameteriv/3
。
等同于 texParameteriv/3
。
等同于 texParameteriv/3
。
等同于 texParameteriv/3
。
gl:texParameter()
和 gl:textureParameter()
将 Params
中的值分配给指定为 Pname
的纹理参数。对于 gl:texParameter()
,Target
定义目标纹理,可以是 ?GL_TEXTURE_1D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
、?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
或 ?GL_TEXTURE_RECTANGLE
。Pname
中接受以下符号
gl:texStorage1D/4
和 gl:textureStorage1D()
同时指定一维纹理所有级别的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则所有级别的格式和尺寸都将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
-spec texStorage2D(Target :: enum(), Levels :: i(), Internalformat :: enum(), Width :: i(), Height :: i()) -> ok.
gl:texStorage2D/5
和 gl:textureStorage2D()
同时指定二维纹理或一维纹理数组所有级别的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则所有级别的格式和尺寸都将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
texStorage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations)
查看源代码-spec texStorage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Fixedsamplelocations :: 0 | 1.
gl:texStorage2DMultisample/6
和 gl:textureStorage2DMultisample()
指定二维多重采样纹理的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则其格式和尺寸将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
-spec texStorage3D(Target, Levels, Internalformat, Width, Height, Depth) -> ok when Target :: enum(), Levels :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i().
gl:texStorage3D/6
和 gl:textureStorage3D()
同时指定三维、二维数组或立方体贴图数组纹理所有级别的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则所有级别的格式和尺寸都将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
texStorage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations)
查看源代码-spec texStorage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i(), Fixedsamplelocations :: 0 | 1.
gl:texStorage3DMultisample/7
和 gl:textureStorage3DMultisample()
指定二维多重采样数组纹理的存储要求。一旦使用此命令指定纹理,除非它是代理纹理,否则其格式和尺寸将变为不可变。但是,图像的内容仍然可以修改,但其存储要求可能不会更改。这种纹理被称为 immutable-format
纹理。
-spec texSubImage1D(Target, Level, Xoffset, Width, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Width :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。要启用或禁用一维纹理,请调用 gl:enable/1
和 gl:disable/1
,参数为 ?GL_TEXTURE_1D
。
-spec texSubImage2D(Target, Level, Xoffset, Yoffset, Width, Height, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。
texSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, Type, Pixels)
查看源代码-spec texSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
纹理映射将指定纹理图像的一部分映射到启用了纹理的每个图形图元上。
-spec textureBarrier() -> ok.
当着色器阶段获取纹素并且相同的纹素通过片段着色器输出写入时,渲染片段的值是未定义的,即使读取和写入不在同一个绘图命令中也是如此。要通过后续绘图命令中的纹素获取安全地读取已写入的纹素的结果,请在两个绘图命令之间调用 gl:textureBarrier/0
,以保证在执行后续绘图命令之前已完成写入并且缓存已失效。
gl:texBuffer/3
和 gl:textureBuffer/3
将指定的缓冲区对象的数据存储附加到指定的纹理对象,并指定缓冲区对象中找到的纹理图像的存储格式。纹理对象必须是缓冲区纹理。
-spec textureBufferRange(Texture :: i(), Internalformat :: enum(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
gl:texBufferRange/5
和 gl:textureBufferRange/5
将指定缓冲区对象的数据存储区的一个范围附加到指定的纹理对象,并指定缓冲区对象中纹理图像的存储格式。纹理对象必须是缓冲区纹理。
-spec textureView(Texture, Target, Origtexture, Internalformat, Minlevel, Numlevels, Minlayer, Numlayers) -> ok when Texture :: i(), Target :: enum(), Origtexture :: i(), Internalformat :: enum(), Minlevel :: i(), Numlevels :: i(), Minlayer :: i(), Numlayers :: i().
gl:textureView/8
将纹理对象初始化为另一个纹理对象的别名或视图,与初始化的纹理共享父纹理的部分或全部数据存储区。纹理
指定先前通过成功调用 gl:genTextures/1
保留但尚未绑定或给定目标的名称。目标
指定新初始化的纹理的目标,并且必须与父纹理的目标兼容,在 原始纹理
中给出,如下表所示
gl:transformFeedbackBufferBase/3
将缓冲区对象 缓冲区
绑定到变换反馈对象 Xfb
中索引为 索引
的绑定点。
-spec transformFeedbackBufferRange(Xfb :: i(), Index :: i(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
gl:transformFeedbackBufferRange/5
将缓冲区对象 缓冲区
中由 偏移
和 大小
表示的范围绑定到变换反馈对象 Xfb
中索引为 索引
的绑定点。
-spec transformFeedbackVaryings(Program :: i(), Varyings :: [unicode:chardata()], BufferMode :: enum()) -> ok.
使用 gl:transformFeedbackVaryings/3
指定要在变换反馈模式中记录的顶点或几何着色器输出的名称。当几何着色器处于活动状态时,变换反馈会记录从发射的顶点中选择的几何着色器输出变量的值。否则,将记录所选顶点着色器输出的值。
等同于 translatef/3
。
gl:translate()
产生 (x y z) 的平移。当前矩阵(参见 gl:matrixMode/1
)乘以这个平移矩阵,乘积替换当前矩阵,就像调用 gl:multMatrix()
时使用以下矩阵作为其参数一样
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
-spec uniformBlockBinding(Program :: i(), UniformBlockIndex :: i(), UniformBlockBinding :: i()) -> ok.
使用 gl:uniformBlockBinding/3
为活动的统一块分配绑定点。程序的每个活动统一块都有一个对应的统一缓冲区绑定点。程序
是程序对象的名称,该程序对象在过去已发出 gl:linkProgram/1
命令。
等同于 uniformMatrix4x3fv/3
。
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x3dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x3fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x4dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x4fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix3dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix3fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x2dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x2fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x4dv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x4fv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix4dv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix4fv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x2dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x2fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x3dv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等同于 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x3fv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
gl:uniform()
修改统一变量或统一变量数组的值。要修改的统一变量的位置由 位置
指定,它应该是 gl:getUniformLocation/2
返回的值。gl:uniform()
在通过调用 gl:useProgram/1
使其成为当前状态一部分的程序对象上运行。
gl:uniformSubroutines()
使用 索引
中的子程序索引加载当前程序着色器阶段 着色器类型
的所有活动子程序统一变量,将 索引[i]
存储到位置 I
的统一变量中。Count
必须等于当前正在使用着色器阶段 着色器类型
的程序 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
的值。此外,索引
中的所有值都必须小于着色器阶段的 ?GL_ACTIVE_SUBROUTINES
的值。
-spec useProgram(Program :: i()) -> ok.
gl:useProgram/1
将由 程序
指定的程序对象安装为当前渲染状态的一部分。通过使用 gl:attachShader/2
将着色器对象成功附加到程序对象、使用 gl:compileShader/1
成功编译着色器对象以及使用 gl:linkProgram/1
成功链接程序对象,可以在程序对象中创建一个或多个可执行文件。
gl:useProgramStages/3
将程序对象中与指定着色器阶段集关联的可执行文件绑定到由 管道
给出的程序管道对象。管道
指定要绑定可执行文件的程序管道对象。阶段
包含指示在 程序
中要与程序管道对象 管道
一起使用的着色器阶段的位逻辑组合。阶段
必须是 ?GL_VERTEX_SHADER_BIT
、?GL_TESS_CONTROL_SHADER_BIT
、?GL_TESS_EVALUATION_SHADER_BIT
、?GL_GEOMETRY_SHADER_BIT
、?GL_FRAGMENT_SHADER_BIT
和 ?GL_COMPUTE_SHADER_BIT
的逻辑组合。此外,可以指定特殊值 ?GL_ALL_SHADER_BITS
,以指示应将 程序
中包含的所有可执行文件安装到 管道
中。
-spec validateProgram(Program :: i()) -> ok.
gl:validateProgram/1
检查 程序
中包含的可执行文件是否可以在当前 OpenGL 状态下执行。验证过程生成的信息将存储在 程序
的信息日志中。验证信息可能包含空字符串,也可能包含关于当前程序对象如何与当前 OpenGL 状态的其余部分交互的信息的字符串。这为 OpenGL 实现者提供了一种方法,可以传达有关当前程序效率低下、次优、无法执行等原因的更多信息。
-spec validateProgramPipeline(Pipeline :: i()) -> ok.
gl:validateProgramPipeline/1
指示实现根据当前 GL 状态验证 管道
中包含的着色器可执行文件。实现可以使用它作为机会来执行任何内部着色器修改,这些修改可能是必需的,以确保在给定当前 GL 状态的情况下正确操作已安装的着色器。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
等同于 vertex4sv/1
。
gl:vertex()
命令在 gl:'begin'/1
/gl:'end'/0
对中使用,以指定点、线和多边形顶点。调用 gl:vertex()
时,当前颜色、法线、纹理坐标和雾坐标与顶点关联。
gl:vertexArrayElementBuffer/2
将 ID 为 缓冲区
的缓冲区对象绑定到 ID 为 Vaobj
的顶点数组对象的元素数组缓冲区绑定点。如果 缓冲区
为零,则会删除 Vaobj
的任何现有元素数组缓冲区绑定。
-spec vertexArrayVertexBuffer(Vaobj :: i(), Bindingindex :: i(), Buffer :: i(), Offset :: i(), Stride :: i()) -> ok.
gl:bindVertexBuffer/4
和 gl:vertexArrayVertexBuffer/5
将名为 缓冲区
的缓冲区绑定到顶点缓冲区绑定点,该绑定点的索引由 绑定索引
给出。gl:bindVertexBuffer/4
修改当前绑定的顶点数组对象的绑定,而 gl:vertexArrayVertexBuffer/5
允许调用者使用名为 Vaobj
的参数来指定顶点数组对象的 ID,应该修改该 ID 的绑定。偏移
和 步幅
分别指定缓冲区中第一个元素的偏移量以及缓冲区中元素之间的距离,并且都以基本机器单位度量。绑定索引
必须小于 ?GL_MAX_VERTEX_ATTRIB_BINDINGS
的值。偏移
和 步幅
必须大于或等于零。如果 缓冲区
为零,则取消绑定当前绑定到指定绑定点的任何缓冲区。
-spec vertexArrayVertexBuffers(Vaobj :: i(), First :: i(), Buffers :: [i()], Offsets :: [i()], Strides :: [i()]) -> ok.
gl:bindVertexBuffers/4
和 gl:vertexArrayVertexBuffers/5
将现有缓冲区对象的数组中的存储绑定到顶点数组对象中指定数量的连续顶点缓冲区绑定点单元。对于 gl:bindVertexBuffers/4
,顶点数组对象是当前绑定的顶点数组对象。对于 gl:vertexArrayVertexBuffers/5
,Vaobj
是顶点数组对象的名称。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
gl:vertexAttribBinding/2
和 gl:vertexArrayAttribBinding/3
建立顶点数组对象的通用顶点属性之间的关联,其索引由 Attribindex
给定,以及顶点缓冲区绑定,其索引由 Bindingindex
给定。对于 gl:vertexAttribBinding/2
,受影响的顶点数组对象是当前绑定的对象。对于 gl:vertexArrayAttribBinding/3
,Vaobj
是顶点数组对象的名称。
gl:vertexAttribDivisor/2
修改在单个绘制调用中渲染多个图元实例时,通用顶点属性前进的速率。如果 Divisor
为零,则槽 Index
处的属性每个顶点前进一次。如果 Divisor
为非零值,则该属性每渲染 Divisor
个顶点集实例前进一次。如果某个属性的 ?GL_VERTEX_ATTRIB_ARRAY_DIVISOR
值非零,则该属性称为实例化属性。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
等效于 vertexAttribL4dv/2
。
gl:vertexAttrib()
系列入口点允许应用程序在编号位置传递通用顶点属性。
-spec vertexAttribLPointer(Index :: i(), Size :: i(), Type :: enum(), Stride :: i(), Pointer :: offset() | mem()) -> ok.
gl:vertexAttribFormat/5
、 gl:vertexAttribIFormat/4
和 gl:vertexAttribLFormat/4
,以及 gl:vertexArrayAttribFormat/6
、 gl:vertexArrayAttribIFormat/5
和 gl:vertexArrayAttribLFormat/5
指定顶点数组中数据的组织方式。前三个调用操作绑定顶点数组对象,而后三个调用修改 ID 为 Vaobj
的顶点数组对象的状态。Attribindex
指定正在描述其数据布局的通用顶点属性数组的索引,并且必须小于 ?GL_MAX_VERTEX_ATTRIBS
的值。
-spec vertexAttribPointer(Index, Size, Type, Normalized, Stride, Pointer) -> ok when Index :: i(), Size :: i(), Type :: enum(), Normalized :: 0 | 1, Stride :: i(), Pointer :: offset() | mem().
gl:vertexAttribPointer/6
、gl:vertexAttribIPointer/5
和 gl:vertexAttribLPointer/5
指定在渲染时使用的索引 Index
处的通用顶点属性数组的位置和数据格式。Size
指定每个属性的组件数量,并且必须为 1、2、3、4 或 ?GL_BGRA
。Type
指定每个组件的数据类型,并且 Stride
指定从一个属性到下一个属性的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。
gl:vertexBindingDivisor/2
和 gl:vertexArrayBindingDivisor/3
修改在单个绘制命令中渲染多个图元实例时,通用顶点属性前进的速率。如果 Divisor
为零,则使用绑定到 Bindingindex
的缓冲区的属性每个顶点前进一次。如果 Divisor
为非零值,则该属性每渲染 Divisor
个顶点集实例前进一次。如果相应的 Divisor
值非零,则属性称为 instanced
。
gl:vertexPointer/4
指定在渲染时使用的顶点坐标数组的位置和数据格式。Size
指定每个顶点的坐标数,并且必须为 2、3 或 4。Type
指定每个坐标的数据类型,并且 Stride
指定从一个顶点到下一个顶点的字节步幅,从而允许将顶点和属性打包到单个数组中或存储在单独的数组中。(在某些实现上,单数组存储可能更有效;请参阅 gl:interleavedArrays/3
。)
gl:viewport/4
指定从归一化设备坐标到窗口坐标的 x 和 y 的仿射变换。令 (x nd y nd) 为归一化设备坐标。然后,窗口坐标 (x w y w) 的计算方式如下
gl:viewportArrayv/2
同时指定多个视口的参数。First
指定要修改的第一个视口的索引,并且 Count
指定要修改的视口数量。First
必须小于 ?GL_MAX_VIEWPORTS
的值,并且 First
+ Count
必须小于或等于 ?GL_MAX_VIEWPORTS
的值。索引位于 [First
, First
+ Count
) 范围之外的视口不会被修改。V
包含浮点值数组的地址,该数组指定每个视口的左 (x)、底 (y)、宽度 (w) 和高度 (h),按该顺序排列。x 和 y 给出视口左下角的位置,并且 w 和 h 分别给出视口的宽度和高度。视口指定从归一化设备坐标到窗口坐标的 x 和 y 的仿射变换。令 (x nd y nd) 为归一化设备坐标。然后,窗口坐标 (x w y w) 的计算方式如下
等效于 viewportIndexedfv/2
。
gl:viewportIndexedf/5
和 gl:viewportIndexedfv/2
指定单个视口的参数。Index
指定要修改的视口的索引。Index
必须小于 ?GL_MAX_VIEWPORTS
的值。对于 gl:viewportIndexedf/5
,X
、Y
、W
和 H
分别以像素为单位指定视口的左、底、宽度和高度。对于 gl:viewportIndexedfv/2
,V
包含一个浮点值数组的地址,该数组指定每个视口的左 (x)、底 (y)、宽度 (w) 和高度 (h),按该顺序排列。x 和 y 给出视口左下角的位置,并且 w 和 h 分别给出视口的宽度和高度。视口指定从归一化设备坐标到窗口坐标的 x 和 y 的仿射变换。令 (x nd y nd) 为归一化设备坐标。然后,窗口坐标 (x w y w) 的计算方式如下
gl:waitSync/3
使 GL 服务器阻塞并等待直到 Sync
变为已发出信号。Sync
是要等待的现有同步对象的名称。Flags
和 Timeout
当前未使用,必须分别设置为零和特殊值 ?GL_TIMEOUT_IGNORED
Flags
和 Timeout
是占位符,用于表示同步对象功能的未来扩展。它们必须具有这些保留值,以便现有代码调用 gl:waitSync/3
在存在此类扩展的情况下正常运行。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
等效于 windowPos3sv/1
。
GL 在窗口坐标中维护一个 3D 位置。此位置称为光栅位置,用于定位像素和位图写入操作。它以亚像素精度维护。请参阅 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。