Android 重采样算法,【Android教程】关于GL的多重采样

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

多重采样

多重采样是一种对更多GL图元(点、线段、三角形)进行抗锯齿处理的技术。这种技术在每个像素中对图元多次采样。颜色的所有采样值融合为一个单一的可现实的颜色,并实时更新,所以抗锯齿在应用级别看起来是自动的。因为每个采样包含颜色、深度和图案信息,所以颜色(包括纹理操作),深度和图案信息函数显得和单采样模式是一样的。

一种称为多重采样缓存的副缓存被添加到帧缓存中。像素的采样值,包括颜色、深度和图案值,都保存在这种缓存里。当帧缓存包括一个多重采样缓存,那么它就不再拥有深度和图案缓存,即使多重采样缓存并没有保存深度和图案值。尽管如此,颜色缓存和多重采样缓存是共存的。

多重采样抗锯齿技术对于给三角形着色是非常有价值的,因为它不需要对隐面消除做排序,它可以正确的处理临近的三角形、目标轮廓和相交的三角形。如果仅仅只有点和线段被着色,由基本的GL规定的“平滑的”抗锯齿技术会得到一个更高质量的图像。这种技术被设计来允许多重采样和平滑抗锯齿技术在为单幅场景着色时可以自由切换。

如果SAMPLE_BUFFERS的值为1,图元光栅化都是不同的,并被称为多重采样光栅化。否则,基本图元光栅化被称为单样本光栅化。SAMPLE_BUFFERS的值会调用CetIntegerv函数来判断然后利用pname来设置。

多重采样在对像素片元内容着色时变为两种方法。第一,每个片元在SAMPLES中包含一个覆盖值。SAMPLES的值是一个依赖于执行的常量,它的值会调用CetIntegerv函数来判断然后利用pname来设置。

第二,每个片元都包含SAMPLES深度、颜色值,并设置纹理坐标,以替代保存在单一样本着色模式中的单一的深度值、颜色值和纹理坐标。一个执行可能选择分派相同的颜色值和相同的纹理值给不止一个样本。评估像素值和设置纹理坐标的位置可以是任意的,它将含有片元中心和任意样本位置的像素包含在内。颜色值和纹理坐标**不需要在同一地方求值。因此每个像素片元由整型的x、y栅格坐标、SAMPLES颜色、深度值、SAMPLES的纹理坐标**和一个由SAMPLES最大值的覆盖值组成。

多重采样光栅化由符号常量MULTISAMPLE来控制使用还是不使用。

如果MULTISAMPLE为“否”,图元的多重采样光栅化就和单采样(片元中心)光栅化是一致的,除非片元覆盖值设置为全覆盖。颜色、深度值和纹理坐标**全部会被设置成单样本光栅化的值,或者被设置成如下描述的多重采样光栅化。

如果MULTISAMPLE为“是”,所有图元的多重采样光栅化完全不同于单采样光栅化。那么就不难理解,为什么帧缓存中每个像素点都分配一个SAMPLES储存单元。这些储存单元都有精确的位置,并不仅是区域或范围,每个都被称为一个采样点。与一个像素相联系的采样点可能定位在一个基本单元的内或者外,基本单元被认为是一个像素的范围。此外,在帧缓存中,联系的样本点储存单元可能是一致的,也可能是不同的。

如果样本存储单元逐像素点都有差别,他们会被排列在窗口上,而不是屏幕和边界。否则,着色的结果就会是特别的窗口位置。在3.1中介绍的不变性需求对于多重采样光栅化来说是不严格的,因为一个样本存储单元可能是一个像素储存单元的函数。

查询一个真实的像素样本存储单元是不可能的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值