直接进行 mip 映射

如果需要,使用 mip 映射功能缩放较大图像。

在所有平台上,Flash Player 10.1 和 AIR 2.5 中还提供了另一个新功能,该功能与 mipmap 处理有关。Flash Player 9 和 AIR 1.0 引入了 mipmap 处理功能,可改进缩小位图的品质和性能。

注: Mip 映射功能仅适用于动态加载的图像或嵌入位图。Mip 映射不适用于经过过滤或缓存的显示对象。仅当位图的宽度和高度为偶数时才可以进行 mip 映射。当位图的宽度或高度为奇数时,mip 映射将停止。例如,可将 250 x 250 图像通过 mip 映射缩小到 125 x 125,但无法对其进行进一步的 mip 映射。在这种情况下,至少其中一个尺寸是奇数。尺寸为 2 的若干次幂的位图的效果最佳,例如,256 x 256、512 x 512、1024 x 1024 等。

例如,假设加载了一个 1024 x 1024 图像,但开发人员想对该图像进行缩放以在库中创建一个缩略图。Mip 映射功能在使用中间采样版本的位图作为纹理缩放图像时可以正确呈现该图像。运行时的早期版本在内存中创建中间缩小版本的位图。如果加载了一个 1024 x 1024 图像并以 64 x 64 显示,则运行时早期版本创建的每个位图大小只有原来的一半。例如,在这种情况下将会创建 512 x 512、256 x 256、128 x 128 和 64 x 64 位图。

Flash Player 10.1 和 AIR 2.5 当前支持直接从原始源 mipmap 处理到所需的目标大小。 在上一示例中,将仅创建 4 MB (1024 x 1024) 的原始位图和 16 KB (64 x 64) 的经过 mip 映射处理的位图。

Mip 映射逻辑同样适用于动态位图卸载功能。如果仅使用 64 x 64 的位图,则从内存中释放 4MB 的原始位图。如果必须重新创建 mip 映射,则将重新加载原始位图。另外,如果需要其他各种大小经过 mip 映射处理的位图,则使用位图的 mip 映射链来创建位图。例如,如果必须创建 1:8 位图,则会检查 1:4、1:2 和 1:1 位图以确定首先将哪个位图加载到内存中。如果找不到其他版本,则将从资源中加载 1:1 原始位图并使用该位图。

JPEG 解压缩程序可以使用自己的格式执行 mip 映射。通过直接进行 mip 映射,可将大型位图直接压缩为 mip 映射格式,而无需加载整个解压缩后的图像。生成 mip 映射的速度明显加快,并且不会为大型位图分配占用的内存然后再将其释放。JPEG 图像品质相当于常规 mip 映射技术。

注: 尽量少用 mip 映射。尽管它可以改进缩小位图的品质,但它对带宽、内存和速度都有影响。在某些情况下,最好选择使用通过外部工具预缩放的位图版本,并将其导入到您的应用程序中。如果只需缩小位图,不要一开始就使用较大位图。