【问题标题】:Java2D best way to pick various image with Alpha background overlapped?Java2D选择Alpha背景重叠的各种图像的最佳方法?
【发布时间】:2013-09-10 18:45:20
【问题描述】:

我正在用 Java2D 开发一个等距游戏。即,请注意,我无法直接访问硬件像素着色器(实时软件像素着色器不实用。我可以对每个实体纹理进行一次传递对性能没有明显影响)

我知道典型的方法是以某种方式将单个像素的深度编码到深度缓冲区中并进行查找。但是,我不知道如何在 Java2D 中有效地做到这一点。我将如何存储深度缓冲区?如何过滤掉图像中的 alpha?等等。

到目前为止,我一直在反转用于计算图块坐标的投影矩阵。但是,当您有在这些图块边界之外呈现的实体时,这将无法正常工作。

我考虑的另一种方法是使用颜色映射,但是我遇到的问题与使用深度缓冲区相同(如果我可以让深度缓冲区正常工作,我宁愿使用它。)

这是我正在使用的图片:

【问题讨论】:

  • Java.awt.Colors 有一个 alpha 值...所以看起来大部分工作已经完成,前提是您先绘制位于其他图块后面的图块。

标签: java game-engine java-2d isometric


【解决方案1】:

我已经很好地解决了这个问题。解决方案其实很简单,就是标新立异。

图形通过 TreeMap 进行深度排序,然后渲染到屏幕上。可以简单地反向遍历此 TreeMap(并将其保留到下一个渲染周期)以将光标位置转换为它所覆盖的正确图像(通过测试像素 [以反向渲染顺序] 并检查它们是否透明。)

解决方案在开源项目中,在 io.github.jevaengine.world.World 类下,pick 方法。 https://github.com/JeremyWildsmith/JevaEngine/blob/master/jevaengine/src/main/java/io/github/jevaengine/world/World.java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2015-06-02
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    相关资源
    最近更新 更多