![](/img/trans.png)
[英]Java - Creating a 2D tile map in a panel using Graphics2D Rectangles?
[英]Graphics2D multi-composite of an isometric tile map
我正在开发一款游戏,该游戏对行星表面使用基于等距图块的地图( 例如 )。 每个tile单元都是一个小的BufferedImage元素。 通过修改这些图像的像素(变暗和蓝移)来实现白天和夜晚的冰柱,然后在每座建筑物上渲染一个窗口光照图(另一个静态BufferedImage)。 通过按右上-左下的顺序保持适当的Z顺序,并且仅绘制图块条。 不幸的是,如果昼夜转换以非常快的游戏速度发生,则该方法实际上破坏了图像的加速度,并且渲染变得非常慢。 当前的解决方案是以增加大量内存为代价为每个图块缓存许多阴影。
Graphics2D的Java 合成模式是否可以用于此目的,例如绘制正常的彩色图块,在其上绘制变暗的表面,然后应用光照贴图? 如何确保仅普通图块的像素受到重新着色的影响?
对我而言,最快的方法如下所示:
BufferedImage
上使用光照贴图图像渲染视图 CompositeContext
在目标缓冲区上绘制第二个BufferedImage
自定义CompositeContext
将首先应用变暗+蓝色平移,然后乘以光照贴图值。
还要研究VolatileImage
的使用(例如,请参见本文 )以利用硬件加速。 此外,您可以考虑再次使用LWJGL (完整的游戏开发库)或JOGL (Java OpenGL绑定)来利用硬件加速。 如果您从未进行过任何3D编程,这似乎令人望而生畏,但对于2D图形来说,它确实非常优雅和简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.