Surface添加纹理失败:
最新推荐文章于 2022-01-10 11:33:23 发布
Surface添加纹理,首先计算纹理坐标:
long CKTEngModelFunc::CalSurfTexCoord(C3DSurface* surf)
{
//改纹理坐标
for(i = 0; i < lSurfPntNum; i++)
{
pntCollection.GetPoint(i, &curDot);
pTexcoords[i].x = (curDot.x - surfBox.xmin) * ex * 1.0f;
//此处的.0为缩放比,通过设置这个参数可以让拉伸的材质,重复贴纹理,但是通常 x和y的缩放比是不一样的,要各自计算
pTexcoords[i].y = (curDot.y - surfBox.ymin) * ey * 1.0f;
}
lRes = surf->UpdatePointCollection(&pntCollection, &vertexDecorationObj);
}
然后添加材质:
terrainSur.SetMaterialName(TString("MineMaterial/MineTerrainMaterial"));
但是这样没有显示材质,主要是因为在 纹理指定材质是在surface更新之后,这样就没有把后面设置的材质就没有更新到surface中。
解决方法:
两者调换顺序:先制定材质,然后计算坐标
terrainSur.SetMaterialName(TString("MineMaterial/MineTerrainMaterial"));
long CKTEngModelFunc::CalSurfTexCoord(C3DSurface* surf)
按照以前的方法,
CalSurfTexCoord(C3DSurface* surf)
SetMaterialName
terrainSur.Save(NULL); 就可以了