![](/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.