我一直在做一個非常簡單的遊戲,並且我已經決定包含一些基本的紋理。我正在試驗代碼,出於某種原因,我不知道爲什麼,我無法獲得正確映射的紋理。現在,我只是試圖將一個綠色矩形(512 x 64 .png文件)映射到640 x 480大小的屏幕底部。此綠色矩形應該表示地面。這裏是我的嘗試失敗的圖像: LWJGL混淆紋理映射
這裏是培訓相關代碼:
在我創建了啓動I類調用這個函數:
public void initGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, gameWidth, gameHeight, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
在地上類我有創建,我稱之爲繪製函數。該紋理被加載到Boot類中,並設置爲一個受保護的變量,我將其綁定並用在ground.draw()函數中。
public void draw() {
this.texture.bind();
GL11.glLoadIdentity();
GL11.glTranslatef(0, 0, 0);
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(0, 480 - height);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(640, 480 - height);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(640, 480);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(0, 480);
GL11.glEnd();
}
另外,如果你會注意到上面我有一個GL11.glTranslatef調用。如果我只是將這個函數的第二個參數設置得足夠大,以便在y方向上進一步移位,我可以將我的地面紋理放在正確的位置,但是我不希望這樣做。我真的不知道紋理如何在這個位置結束,我想弄清楚爲什麼。
所以問題是什麼?綠色四邊形的大小是否與您爲四個頂點指定的大小不同? – 2013-03-13 10:33:42
問題是我在上面顯示的第二個代碼塊中的頂點應該(我認爲)映射到窗口底部的一個區域。左上角的點是0,(480 - 高度),其中高度是紋理的高度。接下來是640,480的高度,所以這當然應該是右上角。顯示的接下來的兩個頂點顯然是窗口的左下角和右下角。 – gratsby 2013-03-13 10:49:33