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)
我正在开发一款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)