我不知道我是不是在這裏看到的東西。我一直在努力嘗試使它運作很長時間。我之前使用過精靈表和紋理座標 - 所以我對它們很熟悉。紋理座標無法正常工作?
我有一個9x9的精靈圖(如圖所示)。它是一個等軸精靈圖(因爲我有等角拼圖)。總的圖像爲1152 X 576
我計算出,基於該尺寸,每個瓦片的寬度爲128個像素且高度爲64
圖像的百分比每一瓦片佔用是0.111 (長度方向和高度方面[128/1152 | 64/576])。
但是,我的代碼無法正常工作。
的代碼和tilesheet圖片:http://i.imgur.com/JU4YYaB.png
原始代碼:
@Override
public void drawTile(int tileX, int tileY, Texture atlas) {
int tileXcoord, tileYcoord;
tileXcoord = (tileX - tileY) * (TILE_XHALF);
tileYcoord = (tileX + tileY) * (TILE_YHALF);
atlas.bind();
//GL11.glColor3f(Red, Green, Blue);
GL11.glBegin(GL11.GL_QUADS);
{
setTextureCoordinates(1);
GL11.glVertex2f(tileXcoord, tileYcoord);
setTextureCoordinates(2);
GL11.glVertex2f(tileXcoord + TILE_XHALF, tileYcoord + TILE_YHALF);
setTextureCoordinates(3);
GL11.glVertex2f(tileXcoord + (TILE_XHALF * 2), tileYcoord);
setTextureCoordinates(4);
GL11.glVertex2f(tileXcoord + TILE_XHALF, tileYcoord - TILE_YHALF);
}
GL11.glEnd();
}
//***** SET TEXTURE COORDINATES *****
public void setTextureCoordinates(int pos) {
Rectangle rect = textureAtlas.getTexture(ID);
switch (pos) {
case 1 :
GL11.glTexCoord2f(0.0f, 0.0555f); // left-middle
//GL11.glTexCoord2f(0.0f, 0.5f);
break;
case 2:
GL11.glTexCoord2f(0.0555f, 0.111f); //top-middle
//GL11.glTexCoord2f(0.5f, 1f);
break;
case 3:
GL11.glTexCoord2f(0.111f, 0.0555f); // right-middle
//GL11.glTexCoord2f(1f, 0.5f);
break;
case 4:
GL11.glTexCoord2f(0.0555f, 0.0f); // bottom-middle
//GL11.glTexCoord2f(0.5f, 0.0f);
break;
}
}
編輯:輸出:http://i.imgur.com/YYKo37m.png
這樣做!我的天啊。你是一個拯救生命的人。謝謝! – Namone
@Namone沒有問題:)如果您發現答案完全回答您的問題,請記住將答案標記爲已接受。 –