2013-02-23 8 views
0

나는 내가 만들고있는 게임에 LWJGL과 Slick2D를 사용하고 있습니다. 그리기 원하는 방식을 그리는 것처럼 보이지 않으므로 직접 그리기 방법을 생각해 냈습니다. 기본적으로 이미지, 도끼 및 ay를 가져 와서 이미지의 각 픽셀을 통과하여 색상을 얻은 다음 x 매개 변수에 x 픽셀을 더한 이미지를 그려 픽셀이 그려지는 위치를 얻습니다. 에. y와 같은 아이디어. 비록 알파 채널이 픽셀을 위해 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(); 
} 
+0

우선, 어디에서 오류가 발생하는지에 대한 줄 번호가 있습니까 (예외를 던지는 지점을 정확하게 알고 있으면 디버그가 훨씬 쉬워집니다)? 둘째, 코드의이 부분에서 배열에 대한 명시적인 참조가 보이지 않습니다. 배열에 액세스하는 위치를 확인한 다음 인덱스로 사용되는 변수 나 상수가 외부에있는 값을 가질 수 있는지 확인합니다. 배열의 크기. – scaevity

답변

0

내 대답은 텍스처가 데이터의 배열이라고 가정합니다.

나는 getColor() 방법이라고 생각합니다. for 루프는 실행되고 높이와 너비 값을 사용합니다. 배열은 일반적으로 0부터 시작하며 width 및 height는 일반적으로 배열 수입니다. 그래서 HEIGHT에 도달하면 텍스쳐 배열이 예외를 던질 수 있습니다.

<= 일부를 제거 시도하고 <

예로 교체 :

for (int x = 1; x < image.getWidth(); x++)

그것은 또한 당신이 그렇게하면 전체 이미지를 얻을 수 있습니다 0으로 시작하는 데 도움이 될 수 있습니다.

예 여기

for (int x = 0; x < image.getWidth(); x++)

arrays에 대한 링크입니다.

이 방법은 어떤 위치에서든 색상을 요구할 때 텍스처 배열에있는 색상 이상으로 색상을 요구하지 않습니다. 잘만되면 나는 이해했다.

관련 문제