0

晚上好所有Android OpenGL紋理映射/紋理地圖集

我想讓我的OpenGL程序使用1紋理(紋理圖集)。它是256 x 256.我加載它作爲一個正常的紋理。

如果紋理從0,0到1,1,那麼我相信每個正方形的大小是0.2。

enter image description here

的問題是隻有第一和第三質感的工作。第二個是奇數,第4似乎是第2 + 3的質地和5日是第2,第3和第4放在一起

enter image description here

所以我建了一個簡單的函數返回紋理COORDS

int yy = textureId/5; 
    int xx = textureId % 5; 
    float size = 1.0f/5; 

    float[] textureCoordinateDataMap = createTexture(size * xx,size * yy ,size, size); 


    public float[]createTexture(float x, float y, float xx, float yy) 
    { 
     float[] textureCoordinateDataMap = 
       { 
         // Front face 
         x, y, 
         x, yy, 
         xx, y, 
         x, yy, 
         xx, yy, 
         xx, y, 

         // Right face 
         x, y, 
         x, yy, 
         xx, y, 
         x, yy, 
         xx, yy, 
         xx, y, 

         // Back face 
         x, y, 
         x, yy, 
         xx, y, 
         x, yy, 
         xx, yy, 
         xx, y, 

         // Left face 
         x, y, 
         x, yy, 
         xx, y, 
         x, yy, 
         xx, yy, 
         xx, y, 

         // Top face 
         x, y, 
         x, yy, 
         xx, y, 
         x, yy, 
         xx, yy, 
         xx, y, 

         // Bottom face 
         x, y, 
         x, yy, 
         xx, y, 
         x, yy, 
         xx, yy, 
         xx, y, 
       }; 

     return textureCoordinateDataMap; 
    } 

我試圖硬編碼的值,只有那些工作是 0,0 0.4,0 0,0.4 0.4,0.4

回答

1

如果你想牛逼o使用此數組中的值作爲紋理座標,您需要將大小添加到左/下座標以獲取右/頂部座標。現在您將尺寸本身用作右側/頂部座標。一種方法是在函數調用中添加大小:

float[] textureCoordinateDataMap = createTexture(
    size * xx, size * yy , size (xx + 1), size * (yy + 1));