我目前正在开发一个基于积木世界的游戏。将子画面绘制在另一个之上以创建伪3D体验。为了避免在摄像机移动的情况下进行很多重画调用,我只渲染一次图片并将其保存到BufferedImage中,然后在正确的位置绘制它。到目前为止,效果很好...但是不会加载整个图片。每次在图片边缘都缺少块精灵。这是绘制大BufferedImage的基本迭代循环:
for(int z=0; z < zLevel; z++)
for(int x=0; x<Main.getWorld().getMapBoundX(); x++)
for(int y=0; y<Main.getWorld().getMapBoundY(); y++)
if(needsRedrawing[x][y][z]) {
g.drawImage(Main.getWorld().getEntity(new Vector(x, y, z)).getBlock().getType().getGraphic(), 196*64/2-32+x*32-y*32, zLevel*32+x*16+y*16-(z+1)*32, this);
}
之后,图像将在屏幕上显示为:
g = (Graphics2D) graphics;
g.drawImage(img, screenCoordinates[0], screenCoordinates[1], this);
此image(对不起颜色... :))显示结果,并且您可以清楚地看到,其中缺少一些块。
有人知道,为什么那几个first(!)块未正确加载?我尝试渲染多少层都没有关系,总会缺少一些精灵。
谢谢,
菲尔
您可以在此站点上找到答案。