Ninja Library - テクスチャ関数

njLoadPvrHeader

PVRヘッダデータの取得

書式

Sint8 *njLoadPvrHeader( pvrh, globalIndex, pTexture )
NJS_PVRHEADERDATA *pvrh
Uint32 *globalIndex
Sint8 *pTexture

引数

pvrh   NJS_PVRHEADERDATA構造体PVRヘッダデータの出力
globalIndex   ファイルからロードしたグローバルインデックス
pTexture   テクスチャの先頭ポインタ

戻り値

PVRヘッダがあった場合   データの先頭アドレス
PVRヘッダがない場合   NULL

解説

PVRテクスチャデータを入力することでテクスチャのサイズ、タイプ、グローバルインデックスを取得します。 グローバルインデックスがない場合引数 globalIndex には、0xFFFFFFFFが返ります。 PVRヘッダがあった場合は、返値にPVRテクスチャデータの先頭が返ります。 データの先頭とはヘッダ部分の次を示します。


用例

Sint32 nuLoadMemoryTexture(NJS_TEXLIST *texlist,Uint32 n)
{
	Sint32 ret;
	Uint32 globalIndex;
	Uint32 globalIndex0;
	Uint32 bank;
	NJS_PVRHEADERDATA pvrh;
	Sint8 * tex_start;
	Sint32 texmng_no;
	NJS_TEXINFO *info;
	
	njInitTextureErrStat();
	/*
		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;
	}

	/* filenameにメモリテクスチャが設定されているかリードしてみる */
	tex_start = njLoadPvrHeader(&pvrh,&globalIndex,(Sint8*)texlist->textures[n].filename);
	if(tex_start == NULL){
		/* filenameになかった場合は、Ninja1までと同じ設定になっているはず */
		tex_start = njLoadPvrHeader(&pvrh,&globalIndex,((NJS_TEXINFO*)texlist->textures[n].filename)->texaddr);
		if(tex_start == NULL){
			/* これでもヘッダが確認できなかった場合は、ヘッダ情報はないとみなす */
			info = (NJS_TEXINFO*)texlist->textures[n].filename;
			pvrh.nWidth = info->texsurface.nWidth;
			pvrh.nHeight = info->texsurface.nHeight;
			pvrh.nTextureType = info->texsurface.Type;
			tex_start = ((NJS_TEXINFO*)texlist->textures[n].filename)->texaddr;
		}
	}

	if(globalIndex0 != NJD_GLOBAXINDEX_FIRST_VAL){
		globalIndex = globalIndex0;
	}

	ret = njEntryTextureManageNum(texlist,n,globalIndex,bank,&pvrh,&texmng_no);
	
	if(ret)	return ret;

	if(njLoadTextureManageNum(texmng_no,tex_start) < 0){
		njReleaseTextureManageNum(texmng_no);
		/* テクスチャロードエラー */
		return -1;
	}

	while(njLoadTextureFinishDMA() != 1);
	
	return 1;
}



備考

Ninja1より型が変更されました。

参照

njGetTexSurfaceEx() テクスチャサーフェスの作成
njLoadTexturePartLowEx() 即時復帰型ローレベル分割テクスチャロード
njLoadTextureFinishDMA() テクスチャのDMA終了確認
njReleaseTextureLowEx() テクスチャローレベルリリース

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