8.8 OpenGL纹理和采样器:多重采样纹理

本文详细解释了OpenGL中的多重采样纹理技术,包括纹理类型、glTexImage2DMultisample和glTexImage3DMultisample函数的用法,以及在着色器中访问多重采样的规则。着重介绍了样本数量、纹理元素和固定样本位置的概念。
摘要由CSDN通过智能技术生成

多重采样纹理 Multisample Textures

除了前几节中描述的纹理类型外,还支持两种额外的纹理类型。多重采样纹理类似于二维或二维数组纹理,不同之处在于每个纹理元素(texel)包含多个样本。多重采样纹理没有多个图像层次(multiple image levels)。

以下命令:

void glTexImage2DMultisample( enum target, sizei samples, enum internalformat, sizei width, sizei height, boolean fixedsamplelocations );
void glTexImage3DMultisample( enum target, sizei samples, enum internalformat, sizei width, sizei height, sizei depth, boolean fixedsamplelocations );

用于建立多重采样纹理图像的数据存储、格式、尺寸以及样本数量。对于TexImage2DMultisampletarget必须是TEXTURE_2D_MULTISAMPLEPROXY_TEXTURE_2D_MULTISAMPLE;而对于TexImage3DMultisampletarget必须是TEXTURE_2D_MULTISAMPLE_ARRAYPROXY_TEXTURE_2D_MULTISAMPLE_ARRAYwidthheight表示纹理的像素维度。

samples参数代表请求的最小样本数。由于不同的实现可能对多重采样纹理支持不同的样本计数,因此实际分配给纹理图像的样本数量依赖于具体实现。然而,结果中TEXTURE_SAMPLES的值保证大于等于samples,并且不超过实现所支持的下一个较大样本计数。

如果fixedsamplelocationsTRUE,则图像将在所有纹理元素中使用相同的样本位置和相同数量的样本,并且样本位置不会依赖于图像的内部格式或大小。

成功调用TexImage*Multisample时,会删除目标现有的任何图像,纹理内容未定义。相应地,TEXTURE_WIDTHTEXTURE_HEIGHTTEXTURE_SAMPLESTEXTURE_INTERNAL_FORMATTEXTURE_FIXED_SAMPLE_LOCATIONS 将分别设置为widthheight、实际分配的样本数、internalformatfixedsamplelocations

当在着色器中访问多重采样纹理时,访问需要一个整数向量来描述要获取哪个纹理元素,以及一个对应于第14.3.1节所述样本编号的整数,以确定从该纹理元素中获取哪个样本。不允许在多重采样纹理目标上使用标准采样指令,并且由fetch操作执行时不进行过滤处理。尝试获取小于零或大于等于纹理中样本总数的样本号会导致未定义的结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值