大家晚上好
我试图让我的 OpenGL 程序使用 1 个纹理(纹理图集)。它是 256 x 256。我将其加载为普通纹理。
如果纹理是从 0,0 到 1,1,那么我相信每个正方形的大小是 0.2。
问题只是第一个和第三个纹理工作。第二个是奇数,第四个似乎是第二个+第三个纹理,第五个是第二个,第三个和第四个放在一起
所以我构建了一个简单的函数来返回纹理坐标
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