缓冲纹理 Buffer Textures
除了在前面的章节中描述的一维、二维和三维、一维和二维数组以及立方体贴图纹理之外,还支持一种额外的纹理类型。缓冲纹理类似于一维纹理。然而,与其他纹理类型不同,纹理图像不作为纹理的一部分存储。相反,缓冲对象附加到缓冲纹理上,并且纹理图像来自于该缓冲对象的数据存储。当缓冲对象的数据存储内容被修改时,这些更改会反映在任何附加到该缓冲对象的缓冲纹理的内容中。缓冲纹理没有多个图像级别;只有一个数据存储可用。
以下命令
void glTexBufferRange(enum target, enum internalformat, uint buffer, intptr offset, sizeiptr size);
void glTextureBufferRange(uint texture, enum internalformat, uint buffer, intptr offset, sizeiptr size);
将缓冲对象命名为buffer
的存储范围附加到缓冲纹理上,大小为size
个基本机器单元,从offset
(也是基本机器单元)开始。对于glTexBufferRange
,缓冲纹理是当前绑定到目标的纹理。对于glTextureBufferRange
,texture
是缓冲纹理的名称。目标或纹理的有效目标必须为TEXTURE_BUFFER
。
如果buffer
为零,则分离附加到缓冲纹理的任何缓冲对象,忽略offset
和size
的值,并将缓冲纹理的offset
和size
状态重置为零。internalformat
指定在附加的缓冲对象范围内找到的纹理图像的存储格式,并且必须是Table 8.16
中找到的大小内部格式之一。
这两个命令