8.9 OpenGL纹理和采样器:缓冲纹理

本文介绍了缓冲纹理,一种特殊的纹理类型,其数据存储不直接在纹理中,而是通过缓冲对象。它支持动态更新,着色器通过访问缓冲对象获取数据。文章详细讲解了如何使用glTexBufferRange和glTextureBufferRange命令,以及纹理单元的计算方法和在着色器中的处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓冲纹理 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,缓冲纹理是当前绑定到目标的纹理。对于glTextureBufferRangetexture是缓冲纹理的名称。目标或纹理的有效目标必须为TEXTURE_BUFFER

如果buffer为零,则分离附加到缓冲纹理的任何缓冲对象,忽略offsetsize的值,并将缓冲纹理的offsetsize状态重置为零。internalformat指定在附加的缓冲对象范围内找到的纹理图像的存储格式,并且必须是Table 8.16中找到的大小内部格式之一。

这两个命令


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值