Sint32 nuReLoadTextureNum(Uint32 n,void *texaddr,Uint32 attr,Uint32 lod)
{
Sint8 *pTexture;
char filename[32];
Sint8 *texbuf;
Int texbuf_size;
NJS_TEXLIST *texlist;
Uint32 Surfaceflag;
Uint32 nTextureType;
Uint32 nWidth;
Uint32 nHeight;
Uint32 size;
NJS_PVRHEADERDATA pvrh;
Sint8 *tex_start;
NJS_TEXMANAGE *texmanage;
if(attr & NJD_TEXATTR_TYPE_MEMORY){
pTexture = texaddr;
}
else{
njCheckFileName(filename,(char*)texaddr,".PVR");
nuGetTextureBuffer(&texbuf,&texbuf_size);
if(nuTexFreadAll(filename,texbuf,texbuf_size) < 0){
return -1;
}
if((tex_start = njLoadPvrHeader(&pvrh,NULL,texbuf)) == NULL){
pTexture = texbuf;
}
else{
pTexture = tex_start;
}
texlist = njGetCurrentTexList();
Surfaceflag = NJM_TEXTURE_SURFACEFLAG(texlist,n);
if((lod != 0) && (Surfaceflag & NJD_SURFACEFLAGS_MIPMAPED)){
nTextureType = NJM_TEXTURE_TYPE(texlist,n);
nWidth = nHeight = (lod >> 1);
size = njCalcTextureSize(nWidth,nHeight,nTextureType);
pTexture = (Sint8*)((Uint32)pTexture + size);
}
}
return njReLoadTextureLodNum(n,pTexture,lod);
}