繁体   English   中英

等轴测图的Graphics2D多重复合

[英]Graphics2D multi-composite of an isometric tile map

我正在开发一款游戏,该游戏对行星表面使用基于等距图块的地图( 例如 )。 每个tile单元都是一个小的BufferedImage元素。 通过修改这些图像的像素(变暗和蓝移)来实现白天和夜晚的冰柱,然后在每座建筑物上渲染一个窗口光照图(另一个静态BufferedImage)。 通过按右上-左下的顺序保持适当的Z顺序,并且仅绘制图块条。 不幸的是,如果昼夜转换以非常快的游戏速度发生,则该方法实际上破坏了图像的加速度,并且渲染变得非常慢。 当前的解决方案是以增加大量内存为代价为每个图块缓存许多阴影。

Graphics2D的Java 合成模式是否可以用于此目的,例如绘制正常的彩色图块,在其上绘制变暗的表面,然后应用光照贴图? 如何确保仅普通图块的像素受到重新着色的影响?

对我而言,最快的方法如下所示:

  1. 将带有普通图像的视图渲染到目标缓冲区
  2. 在第二个BufferedImage上使用光照贴图图像渲染视图
  3. 使用自定义CompositeContext在目标缓冲区上绘制第二个BufferedImage

自定义CompositeContext将首先应用变暗+蓝色平移,然后乘以光照贴图值。

还要研究VolatileImage的使用(例如,请参见本文 )以利用硬件加速。 此外,您可以考虑再次使用LWJGL (完整的游戏开发库)或JOGL (Java OpenGL绑定)来利用硬件加速。 如果您从未进行过任何3D编程,这似乎令人望而生畏,但对于2D图形来说,它确实非常优雅和简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM