2015-06-04 17 views
0

我的精靈是統一的精靈畫面的一部分,每個精靈都在四邊形的頂部和右側繪製有額外的像素。它們似乎來自相鄰的精靈。以下是我所定義的UV座標:UV Coords包含相鄰的Sprite

ratio = spriteCountX/spriteCountY; 

UVcoords.x = (float)(index % spriteCountX)/(float)spriteCountX; 
size.x = ratio/(float)spriteCountX; 

UVcoords.y = (float)(index/spriteCountX)/(float)spriteCountY; 
size.y = 1.0f/(float)spriteCountY; 

和頂點數據:(X,Y,Z位置以及每個頂點的UV COORDS)

vertexData[] = { -size.x/2, size.y/2, 0, UVcoords.x,      UVcoords.y, 
        -size.x/2, -size.y/2, 0, UVcoords.x,      UVcoords.y + size.y, 
        size.x/2,  -size.y/2, 0, UVcoords.x + (size.x/ratio), UVcoords.y + size.y, 
        size.x/2,  size.y/2, 0, UVcoords.x + (size.x/ratio), UVcoords.y} 

的紋理過濾器被定義爲:

GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, 
       GLES20.GL_NEAREST); 
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, 
       GLES20.GL_NEAREST); 

我試着加入GL_CLAMP_TO_EDGE沒有運氣:

GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, 
        GLES20.GL_CLAMP_TO_EDGE); 
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, 
        GLES20.GL_CLAMP_TO_EDGE); 

這裏是我的意思的說明:

enter image description here

回答

0

這是一個名爲"texture or pixel bleeding"或「紋理圖集邊緣僞影」的已知問題。這是由於座標舍入,即在區間[0..1]中浮動的值。

減少大量文物的唯一解決方案是在sprite之間引入一些像素填充。我建議你兩種選擇:

  • here開始創建您的實用程序來修改您現有的紋理圖集。
  • 使用一個精靈表編輯器,如this來創建精靈圖表紋理,並在圖集的精靈之間填充。
相關問題