Ninja Library - テクスチャ関数

njReLoadTextureLodNum

テクスチャ番号によるテクスチャのリロード

書式

Sint32 njReLoadTextureLodNum( n, pTexture, lod )
Uint32 n
Sint8 *pTexture
Uint32 lod

引数

 カレントテクスチャリストのテクスチャ番号
pTexture   メモリテクスチャのアドレス
lod   ミップマップのレベル

戻り値

 1   成功
−1   失敗

解説

メインメモリにあるテクスチャをカレントテクスチャリストのテクスチャ番号nの テクスチャをリロードします。リロードするテクスチャは前にロードしていた テクスチャと同じカテゴリーものとします。 また、ミップマップテクスチャの場合、lodを指定することで各ミップマップレベルのみ リロードすることができます。たとえば、lodに128と設定することで、128×128のレベルの テクスチャレベルのみリロードすることができます。 ミップマップテクスチャの場合、テクスチャをすべてリロードする場合、lodに0を指定します。 Ninja1のnjReLoadTextureNum関数でメモリからロードした場合と同じ機能です。


用例

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);

}



備考

pTextureはlodで設定したテクスチャの先頭を指定します。

参照

njReLoadTextureLodNumG() グローバルインデックス番号によるテクスチャのリロード
nuReLoadTextureNum() テクスチャ番号によるテクスチャのリロード

njReLoadTextureLodNum
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000