##### 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