我正在使用LWJGL和Slick2D来制作游戏。我似乎无法让它画出我想要绘制的方式,所以我想出了一个想法来制作我自己的绘图方法。基本上它需要一个图像,ax和ay,并且它会遍历图像中的每个像素,获取颜色,然后使用参数x加上它所在的x像素绘制图像,以获取该像素应该绘制的位置上。与y相同的想法。虽然如果alpha通道不是255像素,它不会绘制它,尽管稍后我会解决它。问题是,每当我运行我的代码,我得到“线程中的异常”主“java.lang.ArrayIndexOutOfBoundsException:-2044”。我很困惑。我希望有人能够弄清楚为什么会发生这种情况。无理由抛出随机outofboundsexception?
private void DrawImage(Image image, int xP, int yP)
{
//xP And yP Are The Position Parameters
//Begin Drawing Individual Pixels
glBegin(GL_POINTS);
//Going Across The X And The Y Coords Of The Image
for (int x = 1; x <= image.getWidth(); x++)
{
for (int y = 1; y <= image.getHeight(); y++)
{
//Define A Color Object
Color color = null;
//Set The Color Object And Check If The Color Is Completly Solid Before Rendering
if ((color = image.getColor(x, y)).a == 255)
{
//Bind The Color
color.bind();
//Draw The Color At The Coord Parameters And The X/Y Coord Of The Individual Pixel
glVertex2i(xP + x - 1, yP + y - 1);
}
}
}
glEnd();
}
首先,您是否有错误发生位置的行号(如果您确切知道抛出异常的位置,它会使调试更容易)?其次,在代码的这一部分中我没有看到任何明确的数组引用 - 查看您访问数组的位置,然后检查并查看是否有任何变量或常量用作索引的值可能超出数组的大小。 – scaevity 2013-02-23 05:51:48