我使用 openctm 来保存 3d 数据。在这里我可以保存纹理坐标。
纹理稍后以这种方式加载:
const CTMfloat * texCoords = ctm.GetFloatArray(CTM_UV_MAP_1);
for(CTMuint i = 0; i < numVertices; ++ i)
{
aMesh->mTexCoords[i].u = texCoords[i * 2];
aMesh->mTexCoords[i].v = texCoords[i * 2 + 1];
}
texCoords 是浮点数组(一个点 2 个浮点数)。后来纹理以这种方式使用:
glTexCoordPointer(2, GL_FLOAT, 0, &aMesh->mTexCoords[0]);
我的问题是我需要生成 texCoords 数组。u 和 v 是什么意思?是像素位置吗?我必须将它们缩放 1/255 吗?