我使用一个非常大的 BitmapData 作为我的平台游戏的路径图,但是我只使用 4 个特定值的像素,而不是 4294967295。
将此位图数据转换为布尔值的 2 个 2D 向量会节省一些内存吗?如果确实如此,那么性能如何,执行以下操作会更快还是更慢:
MapGetPixel(x:int, y:int):int
{
return MapBoolFirst[x][y] + MapBoolSecond[x][y]*2;
}
而不是位图数据类getPixel32(x:int, y:int):uint
?
简而言之,我正在寻找一种减小尺寸和/或优化我的 4 色位图数据的方法。
编辑: 使用我的布尔方法显然消耗的内存是位图数据的 2 倍。我想布尔值在内存中占用的内存不止一位,否则就太容易了。所以我正在考虑对 int 进行移位,因此有一个 int 存储几个像素的值,但我不确定这个......</p>
编辑 2: 使用 int bitshifts 我可以将 16 个像素的数据管理到一个 int 中,这个技巧应该可以节省一些内存,即使它可能会影响性能。