Android OpenGL纹理映射/纹理图谱
大家晚上好 我试图让我的OpenGL程序使用1纹理(纹理图集)。它是256 x 256。我加载它作为一个正常的纹理 如果纹理是从0,0到1,1,那么我相信每个正方形的大小是0.2 本期仅为第1期和第3期纹理作品。第二个是奇数,第四个似乎是第二+第三个纹理,第五个是第二、第三和第四个纹理 因此,我构建了一个简单的函数来返回纹理坐标Android OpenGL纹理映射/纹理图谱,android,textures,opengl-es-2.0,texture-mapping,texture-atlas,Android,Textures,Opengl Es 2.0,Texture Mapping,Texture Atlas,大家晚上好 我试图让我的OpenGL程序使用1纹理(纹理图集)。它是256 x 256。我加载它作为一个正常的纹理 如果纹理是从0,0到1,1,那么我相信每个正方形的大小是0.2 本期仅为第1期和第3期纹理作品。第二个是奇数,第四个似乎是第二+第三个纹理,第五个是第二、第三和第四个纹理 因此,我构建了一个简单的函数来返回纹理坐标 int yy = textureId / 5; int xx = textureId % 5; float size = 1.0f / 5;
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如果要使用此数组中的值作为纹理坐标,则需要将大小添加到左/下坐标以获得右/上坐标。现在,您使用大小本身作为右/顶坐标。一种方法是在函数调用中添加大小:
float[] textureCoordinateDataMap = createTexture(
size * xx, size * yy , size (xx + 1), size * (yy + 1));