2014-10-08 41 views
1

我打算用草,樹和其他東西做2D冒險遊戲,如果我可以做出這些。我的問題是,當我使用glTexCoord2f將紋理鉗制到四邊形時,它們會彼此分離約25個像素。這些四邊形應該像任何2D遊戲一樣連接在一起。爲什麼我的Texture Quad使用LWJGL與glTexCoord2f定位不正確?

林載他們SlickUtil和紋理的尺寸爲100×100

下面是渲染四邊形我的源代碼和InitGL

public static void Render(){ 
    example--; 
    GL11.glLoadIdentity(); 
    Color.white.bind(); 
    system.Game.ground.bind(); 
    GL11.glTranslatef(example, 0, 0); 
    //I used for loop for cloning quad at each side. 
    for(int x = 0; x <= width; x++){ 
     GL11.glBegin(GL11.GL_QUADS); 
     GL11.glTexCoord2f(0, 0); 
     GL11.glVertex2f(x * 100, 0); 
     GL11.glTexCoord2f(1, 0); 
     GL11.glVertex2f(x * 100 + 100, 0); 
     GL11.glTexCoord2f(1, 1); 
     GL11.glVertex2f(x * 100 + 100, 100); 
     GL11.glTexCoord2f(0, 1); 
     GL11.glVertex2f(x * 100, 100); 
     GL11.glEnd(); 
    } 
    GL11.glLoadIdentity(); 
} 

我的繼承人InitGL代碼。

GL11.glEnable(GL11.GL_TEXTURE_2D);    
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);   

GL11.glEnable(GL11.GL_BLEND); 
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 

GL11.glViewport(0,0,width,height); 
GL11.glMatrixMode(GL11.GL_MODELVIEW); 
GL11.glMatrixMode(GL11.GL_PROJECTION); 
GL11.glLoadIdentity(); 
GL11.glOrtho(0, width, height, 0, 1, -1); 
GL11.glMatrixMode(GL11.GL_MODELVIEW); 
+1

您可以先不使用固定功能管線,而是使用着色器和VBO – 2014-10-08 18:14:42

+3

紋理的大小是多少?你如何加載它們?這聽起來像是一個常見問題,你使用的是一個將紋理大小變成2的冪的庫,而你的實際紋理大小不是2的冪。 – 2014-10-08 18:33:23

+0

看起來你試圖在你的問題中包含截圖,但是有些東西搞砸了......你能問一些關於'![] [1]'的問題嗎?如果你鏈接到截圖,我可以爲你嵌入它。 – 2014-10-09 04:07:26

回答

0

SlickUtil只讀取尺寸爲2的冪的紋理。原因是,只有在OpenGL 2.0以後,OpenGL才能讀取具有非二次冪的紋理。嘗試加載尺寸爲128 x 128像素的紋理。然後用100×100像素顯示它(就像你在你的例子中那樣)。

相關問題