基于Java Tile的照明性能问题

时间:2013-11-09 19:25:26

标签: java graphics game-physics tile light

我正在尝试在我的游戏中实现基于图块的照明系统,同时保持最佳性能。目前,没有照明我有大约700-800 fps。当我渲染光照时,fps下降到300-400左右。

我使用颜色为Color(0,0,0,alphaValue)的g.fillRect()渲染灯光

代码:

for (int y = startY; y<endY; y++) {
    for (int x = startX; x<endX;x++) {
        g.setColor(new Color(0, 0, 0, 255/lightData[y][x]));
        g.fillRect((x*Tile.width)-Camera.x, (y*Tile.height)-Camera.y,
                   Tile.width, Tile.height);
    }
}

LightData [y] [x]是1-8的值。

我想知道是否有另一种更有效渲染灯光的方法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

虽然我理解您的担忧,但您可能正在做一些名为“过早优化”的事情。 300-400 FPS是很多,通常你甚至只有“只”30即可。当你开始实施游戏并且引擎很简单时,你会在FPS上获得疯狂的数字,每增加​​一个功能都会使FPS下降。但是,如果你超过一些合理的金额(如50),我不会太担心。一旦完成所有功能就开始优化,你会发现它很慢或想要更多地抛光引擎。

基本上专注于首先完成所有功能,然后再担心性能。

然而,您可以做的是预先计算:

255 / lightData [Y] [X]

不是将1-8存储在lightData中,而是存储255 / 1,055 / 2等。分区非常昂贵。这可能不会带来很多,但这是一件容易的事情。您甚至可以将暗色/浅色的瓷砖预先放入缓冲区并从中拉出来。