我使用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数组。你和v是什么意思?是像素位置吗?我需要将它们缩放1/255吗?
答案 0 :(得分:0)
虽然与编程无关,但本教程对的 UV坐标是一个很好的介绍:http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/UV_Map_Basics
通常,您不会以编程方式“创建”或“生成”UV贴图。您让3D建模艺术家在建模过程中创建它们。