簡體   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