Mag*_*Sun 4 java performance storage caching image
我有一个超过一千个16乘16像素平铺图像的大集合,我需要用于Java制作的游戏.
在不耗尽JVM可用内存的情况下存储磁贴的最佳方法是什么?
我认为产生1000+ BufferedImages可能并不明智......
保持图像准备就绪的主要目的是加载地图,这些地图将根据地图文件动态生成.
首先,加载所有这些图像真的是一个问题.16乘16像素的1000个图像是256000个像素.即使每个像素使用4个字节也只会导致1 MB的图像数据,这并不多.
如果您真的想要/需要减少加载到内存中的图像数量,您只能将地图所需的可视图块/图像加载到内存中,还可以增加一些图像以提高游戏的响应速度.
例如,如果你的游戏显示地图n
的m
瓷砖,你可以加载一个n+2
由m+2
瓷砖到内存中,或在视觉上表示(其中*是可见的瓷砖+额外加载瓷砖到内存中):
+++++++++++
+*********+
+*********+
+*********+
+++++++++++
Run Code Online (Sandbox Code Playgroud)
当用户移动地图时,您将删除对不再需要的切片的引用,并开始加载新切片.由于您在内存中保留了一个磁贴,因此移动地图仍应非常顺利.当然,如果你的瓷砖相当小,或者移动地图的速度非常快,你可以增加你使用的额外瓷砖的数量
归档时间: |
|
查看次数: |
1440 次 |
最近记录: |