0

我使用 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 吗?

4

1 回答 1

0

虽然与编程无关,但本教程很好地介绍UV 坐标是什么:http ://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/UV_Map_Basics

通常,您不会以编程方式“创建”或“生成”UV 贴图。您让您的 3D 建模艺术家在建模过程中创建它们。

于 2013-05-27T15:25:33.100 回答