0

안녕하세요 모두Android OpenGL 텍스처 매핑/텍스처 Atlas

OpenGL 프로그램에서 텍스처 1 개 (텍스처 Atlas)를 사용하려고합니다. 256 x 256입니다. 일반적인 질감으로로드합니다.

텍스처가 0,0,1,1,0에서 각 사각형은 0.2 크기라고 믿습니다.

enter image description here

문제는 단지 1 · 3 텍스처 작품이다. 제 2 회는 홀수이고 4는 2 + 3 질감과 5 것 같다 2, 3과 4는

enter image description here

그래서 내가 텍스처 좌표를 반환하는 간단한 기능을 내장 조립

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; 
    } 

나는 값이 t를 원하는 경우 작업 0,0 0.4,0 0,0.4 0.4,0.4

답변

1

있는 유일한 사람을 하드 코딩하는 것을 시도했다 이 배열의 값을 텍스처 좌표로 사용하려면 오른쪽/상단 좌표를 가져 오기 위해 왼쪽/아래 좌표에 크기를 추가해야합니다. 지금은 크기 자체를 오른쪽/위쪽 좌표로 사용합니다. 한 가지 방법은 함수 호출에 크기를 추가하는 것입니다.

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