Hello,
I'm making a tile based game, and the Textures for the Tiles are 16x16. Whenever I try to load the Texture so it can be rendered,
I get this error:Code :java.io.IOException: Attempt to allocate a texture to big for the current hardware at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:292) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:231) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:184) at org.newdawn.slick.opengl.TextureLoader.getTexture(TextureLoader.java:64) at org.newdawn.slick.opengl.TextureLoader.getTexture(TextureLoader.java:24) at main.Tile.loadTexture(Tile.java:124) at main.Draw.drawMap(Draw.java:282) at main.Draw.render(Draw.java:324) at main.LaunchWindow.main(LaunchWindow.java:65) Exception in thread "main" java.lang.NullPointerException at main.Draw.drawMap(Draw.java:284) at main.Draw.render(Draw.java:324) at main.LaunchWindow.main(LaunchWindow.java:65)
Now, I know that my gpu can handle it because its a 1GB card.
I ranand got 16384.Code :GL11.glGetInteger(GL11.GL_MAX_TEXTURE_SIZE)
Here is the code for loading the Texture:
Code :public void loadTexture(String a){ try { texture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream(a)); System.out.println(texture.getTextureRef()); } catch (IOException e) { e.printStackTrace(); } }
And the code called when it needs to be rendered:
Code :public void drawMap(Map b){ Color.white.bind(); glBegin(GL_QUADS); b.divideMap(10); Tile[][] t = b.makeMap(b.getK()); for(int y = 0; y < b.tiles.length; y++){ for(int x = 0; x < b.tiles[y].length; x++){ Texture a; t[y][x].loadTexture(t[y][x].getLocation()); a = t[y][x].getTexture(); System.out.println(a.getTextureRef()); a.bind(); glTexCoord2f(0,0); glVertex2f(x,y); glTexCoord2f(1,0); glVertex2f(x + a.getWidth(), y); glTexCoord2f(1,1); glVertex2f(x + a.getWidth(), y + a.getHeight()); glTexCoord2f(0,1); glVertex2f(x, y + a.getHeight()); } } glEnd(); }
Any help is appreciated.