我正在开发一款游戏,该游戏使用基于等距平铺地图的行星表面(示例)。每个平铺单元格都是一个小的 BufferedImage 元素。通过修改这些图像的像素(变暗和蓝移)来实现日夜循环,然后在每个建筑物上渲染窗口光照图(另一个静态 BufferedImage)。正确的 Z 顺序通过从左上角到左下角的顺序保持,并且只绘制瓷砖条。不幸的是,如果昼夜转换发生在非常快的游戏速度上,这种方法实际上会破坏图像的加速,并且渲染会变得非常慢。当前的解决方案是以大量内存增加为代价为每个图块缓存多个阴影。
用于此目的的 Graphics2D的 Java组合模式是否可以,例如,绘制正常颜色的瓷砖,在其上绘制深色表面,然后应用光照贴图?如何确保只有普通图块的像素会受到重新着色的影响?