Ninja Library - テクスチャ関数

njSearchTextureManageNum

グローバルインデックス番号とバンク番号によるテクスチャの検索

書式

Sint32 njSearchTextureManageNum( globalIndex, bank, nTextureType, texmng_no)
Uint32 globalIndex
Uint32 bank
Uint32 nTextureType
Sint32 *texmng_no

引数

globalIndex   グローバルインデックス番号
bank   バンク番号
nTextureType   テクスチャカテゴリーコード
texmng_no   テクスチャマネージメント番号

戻り値

 同じテクスチャが見つからない
-1   エラー(テクスチャマネージメント領域がない)
 同じテクスチャが見つかった

解説

カテゴリーコードがパレットテクスチャの場合、グローバルインデックス番号とバンク番号から同じテクスチャがすでにロードされているか検索します。

グローバルインデックス番号とバンク番号が同じテクスチャが見つかった場合は そのテクスチャマネジメント番号を返し、テクスチャマネージメント領域、 テクスチャシステム領域のリファレンスカウンタに1を加えます。

グローバルインデックス番号が同じでバンク番号が違うテクスチャが見つかったときには、 関数内部でテクスチャマネージメント領域を取得し、テクスチャ情報をコピーしてバンク番号を変更し取得したテクスチャマネージメント番号を返します。 そのとき、テクスチャマネージメント領域のリファレンスカウンタを1にし、 テクスチャシステム領域のリファレンスカウンタに1を加えます。 このときテクスチャマネージメント領域が取得できないときは、−1を返します。 同じテクスチャが見つからない場合は0を返します。

パレットテクスチャ以外のカテゴリーコードの場合、同じグローバルインデックス番号の テクスチャが見つかった場合は、そのテクスチャマネージメント番号を返し、 テクスチャマネージメント領域、テクスチャシステム領域のリファレンス カウンタに1を加えます。同じテクスチャが見つからない場合は、0を返します。


用例

Sint32 nuLoadSysAreaTexture(NJS_TEXLIST *texlist,Uint32 n)
{
	Uint32 globalIndex;
	Uint32 globalIndex0;
	Uint32 bank;
	Sint32 texmng_no;
	NJS_TEXINFO *info;
	Sint32 ret;
	NJS_TEXMANAGE *texmanage;
	NJS_TEXSYSTEM *texsystem;
	/*
		NJD_TEXATTR_TEXCONTINUE,
		NJD_TEXATTR_GLOBALINDEX,
		NJD_TEXATTR_PALGLOBALINDEXの処理
	*/
	ret = njCheckAttrGlobalIndex(texlist,n,&globalIndex0,&bank);
	if(ret){
		/* 0以外の場合 */
		/*  1: NJD_TEXATTR_TEXCONTINUE*/
		/* -1: エラー                 */
		return ret;
	}

	if(globalIndex0 != NJD_GLOBAXINDEX_FIRST_VAL){
		globalIndex = globalIndex0;
	}
	else{
		globalIndex = texlist->textures[n].texaddr;
	}

	ret = njSearchTextureManageNum(globalIndex,bank,0,&texmng_no);
	
	switch(ret){
	case -1:
		return -1;
		break;
	case 0:
		texmng_no = njGetTexManageNum(&texmanage,&texsystem);
		if(texmng_no < 0){
			return -1;
		}
		texmanage->texsys = texsystem;
		if(globalIndex != 0xFFFFFFFF)
			texmanage->texsys->globalIndex = globalIndex;
		_nj_tex_count++;
		break;
		njLinkTexlist(texlist,n,texmng_no);
	}
	
	return 1;
}

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