Java - 绘制外框

Java - Draw'ing outside frame

我正在开发一款2d游戏;我目前正在开发一个在地图上移动相机的系统,我使用了以下方法:我的相机有自己的坐标 - x,y; 我有 ArrayList 和我所有的地图精灵,它们的坐标从 0 到 mapSize,每个精灵都有一个 Draw 函数,看起来就像

g2d.drawImage(纹理, getX(), getY(), getX() + getSizeX(), y + getSizeY(), 0, 0, getSizeX(), getSizeY(), null);

我总是画我所有的精灵,而不检查它们是否可见; 此图是否对计算机造成负载(当绘制与屏幕尺寸相差很远的纹理时)? 渲染前是否需要检查对象是否可见?

我的主要 DrawAll 函数包含():

public void DrawAll(graphics2D g2d){

    g2d.translate(-playerCamera.getX(), -playerCamera.getY());

    for (int i = 0; i < mapSprites.size(); i++) {
        mapSprites.get(i).Draw(g2d);
    }

    g2d.translate(-playerCamera.getX(), -playerCamera.getY());

    drawSomeStrings, etc....

}

这不是很好,因为第二次翻译后绘制的线条在移动屏幕时可能会抽动。 我应该在每个 object\sprite 的 Draw 函数中放弃平移并手动执行偏移坐标吗?

graphics2D 将剪辑您的绘图。所以影响不大。如果你有很多精灵,你应该考虑使用 SpatialIndex 来 select 哪个精灵在屏幕上。 (https://github.com/aled/jsi)