基于 Java 磁贴的照明性能问题



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

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

法典:

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 之间的值。

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

虽然我理解你的担忧,但你可能正在做一些叫做"过早优化"的事情。 300-400 FPS 很多,通常即使"只有"30 个也可以。当您开始实现游戏并且引擎很简单时,您会在 FPS 上获得疯狂的数字,每个添加的功能都会使 FPS 下降。但是,如果您超过合理的数量(例如50),我不会太担心。一旦您完成了所有功能并且您看到它很慢或想要进一步完善引擎,就开始优化。

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

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

255/光数据[y][x]

与其在 lightData 中存储 1-8,不如存储 255/1、255/2 等,除法相当昂贵。这可能不会带来很多,但这是一件事情,应该很容易做到。您甚至可以在缓冲区中预渲染变暗/变亮的图块,并从中绘制它们。

相关内容

  • 没有找到相关文章

最新更新