好。所以,我理解这里的代码结构以及应该发生什么,但无论我做什么,我都无法正确渲染图像。
我正在关注Sopiro的经典3D渲染教程#1,我几乎可以肯定我的所有代码都与他完全相同。但是,在处理了一个随机的像素数组后:
filename
newName
和public void render(Bitmap b, int xOffset, int yOffset)
{
for (int y=0; y<b.height; y++)
{
int yPix = y + yOffset;
for (int x=0; x<b.width; x++)
{
int xPix = x + xOffset;
pixels[xPix + (yPix * width)] = b.pixels[x + (y * b.width)];
}
}
}
会更改屏幕上图像的位置。 yOffset
数组是窗口的大小(例如640x480),而xOffset
是一个数组,表示要添加到pixels
的图像的大小。因此,通过简单地更改由b.pixels
和pixels
确定的位置中的像素颜色,b.pixels
有效地添加到代表屏幕的pixels
数组中。
我删除了边界检查,并将在稍后添加。但是,像素数组链接到具有以下内容的图像...
yOffset
在需要时绘制......
xOffset
img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
pixels = ((DataBufferInt)img.getRaster().getDataBuffer()).getData();
是由public void render()
{
BufferStrategy bs = getBufferStrategy();
if (bs == null)
{
createBufferStrategy(3);
return;
}
screen.render();
for (int i=0; i<pixels.length; i++)
{
pixels[i] = screen.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(img, 0, 0, WIDTH * SCALE, HEIGHT * SCALE, null);
g.dispose();
bs.show();
}
数组表示的图像。
这是我从这段代码中得到的:
Faulty Program Output 这些行应该相互接触,而不是分开 - 我不确定错误是在我的代码中,还是在“黑盒子”像素数组中 - &gt;在幕后发生的图像魔术。
我很乐意提供更多代码。请告诉我。
谢谢