7.3
我在引用别人的一个3ds导入模型的代码的时候,发现他的纹理文件必须在主目录中。但是模型文件*.3ds 文件可以在任何路径下。可见他把纹理的路径设定在了主目录下,但是我想不能看上去很乱,想把模型和模型的纹理放在一个名为data的目录下,(其实纹理的路径只要是和模型文件在一个目录就好)我需要做的就是做个小的字符串处理的函数,作用是从模型文件*.3ds文件的路径中获得模型所在的目录,这个目录的路径加上纹理文件的名字就是纹理的路径咯,呵呵其实好简单。具体的实现如下:
char * addPath(char * filewithpath, char *filename)//为纹理文件加路径使纹理与模型在同一目录下
{
char * temp = new char[255];//设定新的路径存储的字符数组
int i = 0;
int j = 0;
while(filewithpath[i] != '/0')//查找模型路径的最后一个分割符"/"
{
if (filewithpath[i] == '//')//注意"/"是转义符要用"//"
j = i;
i++;
}
for (i = 0; i <=j ; i++)//把得到的目录的路径放到新的路径的数组中
{
temp[i] = filewithpath[i];
temp[i+1] = '/0';
}
i = 0;
while (filename[i] != '/0')//把纹理名字加近来
{
temp[j+i+1] = filename[i];
i++;
}
temp[j+i+1] = '/0'; //加个字符串结束标志
return temp;
}
应用的时候
CreateTexture(g_Texture[j], addPath(filename, g_3DModel[j].pMaterials[i].strFile), i);//使用纹理文件名称来装入位图