Iphone 使用带有“的图像可获得更好的性能”;不透明;财产?为什么?

Iphone 使用带有“的图像可获得更好的性能”;不透明;财产?为什么?,iphone,cocoa-touch,performance,ios,uiimageview,Iphone,Cocoa Touch,Performance,Ios,Uiimageview,我在那个网站上发现了一些东西:。 看着“显示图像”,我发现了一些新的东西 myImage.不透明=是;//显式不透明性能 有人能给我解释一下吗?它适用于哪种类型(或用例)的图像?什么时候没有? 很高兴知道。谢谢你的时间 当视图或层不透明时,性能会比不不透明时更好。如果不是不透明的,图形系统必须将该层与下面的层合成,以生成最终图像。如果是不透明的,那么只需将像素复制到帧缓冲区即可。iPhone GPU是一种基于平铺的渲染器。如果覆盖层在整个平铺上完全不透明,GPU除了不必合成该平铺中的像素外,还可

我在那个网站上发现了一些东西:。 看着“显示图像”,我发现了一些新的东西

myImage.不透明=是;//显式不透明性能

有人能给我解释一下吗?它适用于哪种类型(或用例)的图像?什么时候没有?
很高兴知道。谢谢你的时间

当视图或层不透明时,性能会比不不透明时更好。如果不是不透明的,图形系统必须将该层与下面的层合成,以生成最终图像。如果是不透明的,那么只需将像素复制到帧缓冲区即可。

iPhone GPU是一种基于平铺的渲染器。如果覆盖层在整个平铺上完全不透明,GPU除了不必合成该平铺中的像素外,还可以忽略设置和处理与该特定平铺下的层相关的任何图形命令

如果您的图像没有覆盖完整的磁贴,GPU仍可能需要处理多个层。瓷砖的大小取决于实现,但微小的图形图像覆盖瓷砖的可能性要小得多。覆盖多个瓷砖的巨大图像将显示不透明的最大优势。

来自:

无论何时都将视图声明为不透明 可能的

UIKit使用不透明的 要确定的每个视图的属性 视图是否可以优化 合成操作。设定 此属性的值对于 自定义视图告诉UIKit它是这样做的 不需要在后面渲染任何内容 你的观点。较少的渲染可能会导致 提高了图形的性能 代码,通常鼓励使用。属于 当然,如果设置不透明属性 若要选择“是”,视图必须填充其 将矩形完全与 不透明内容

hotpaw2指出了这一点的幕后原因,可以在以下内容中找到:

延期付款的另一个好处 渲染是指它允许GPU 执行隐藏面删除之前 碎片被处理。像素 如果不可见,则会丢弃 采样纹理或执行 片段处理,非常重要 减少GPU需要的计算量 必须执行才能渲染平铺。到 从中获得最大的好处 特征,绘制尽可能多的框架 尽可能使用不透明内容,并且 尽量减少混合的使用,阿尔法 测试和丢弃指令 在GLSL着色器中。因为硬件 执行隐藏曲面删除,它是 您的申请不需要 从前到后排序基本体


需要注意的一个棘手问题是,每当image属性更改为新UIImage时,UIImageView都会将不透明属性重置为FALSE。您可以显式地签入代码并在对image属性进行任何更改后设置不透明属性,也可以扩展UIImageView并提供自己的setImage实现,在调用super setImage方法后设置不透明。我只是偶然发现这件事。

有意思。。。那么,如何处理性能并将“不透明”设置为“是”?更改图像后立即重新设置?是的,必须在更改图像属性后重新设置。性能胜利发生在操作系统运行的视图合成逻辑中。与未设置属性时合成过程中所需的额外工作相比,设置属性对性能的影响不大。