2013-05-16 80 views
0

我搜索了很多,找不到答案。我知道如何加載圖像,我需要加載的圖像不是256乘256或直接的2的冪。如何使用LWJGL加載圖像

像我怎樣才能加載一個圖像128到384或類似的東西。

我現在使用:

加載圖像:

public static Texture cow = loadTexture("res/cow.png"); 

    private static Texture loadTexture(String file){ 
     try { 
      return TextureLoader.getTexture("JPG", new FileInputStream(new File(file))); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

我們繪製一個三維聚臉:

  txt.bind(); 
     GL11.glBegin(GL11.GL_QUADS); 
     { 
      //GL11.glColor3d(lightLevel, lightLevel, lightLevel); 
      GL11.glColor3d(l, l, l); 
      GL11.glTexCoord2f(0,0); GL11.glVertex3f(x1,y1, z1); 
      GL11.glTexCoord2f(1,0); GL11.glVertex3f(x1+(x2-x1), y1,z1); 
      GL11.glTexCoord2f(1,1); GL11.glVertex3f(x1+(x2-x1), y1+(y2-y1), z1+(z2-z1)); 
      GL11.glTexCoord2f(0,1); GL11.glVertex3f(x1,y1+(y2-y1), z1+(z2-z1)); 
     } 
     GL11.glEnd(); 

現在完美的作品,我只是需要加載的圖像不是2的冪。

回答

1

你可以使用slick2d,它更容易使用和工作無線這個lwjgl!所有你需要做的是:

Image title = null; 

    public static void main(String[] args) { 

} 

@Override 
public void init(GameContainer Gc, StateBasedGame Sbg) 
     throws SlickException { 

    /** 
    * Images 
    */ 

    title = new Image("gfx/main_menu/title/new_title.png"); 
} 

@Override 
public void render(GameContainer Gc, StateBasedGame Sbg, Graphics G) 
     throws SlickException { 

    /** 
    * Background 
    */ 

    G.setColor(Color.white); 
    G.fillRect(0, 0, w*s, h*s); 

    /** 
    * Images 
    */ 

    title.draw(titleY*s,titleX*s); 
} 
+0

哇看起來不錯,謝謝。 –

+1

Slick2D基於LWJGL。所以,它不適用於LWJGL。但是,我不會支持你推薦slick2D的決定,因爲開發團隊不再更新它。使用LibGDX。 – 2013-05-24 18:16:36