Ninja Library - テクスチャ関数

njLoadTextureFinishDMA

テクスチャのDMA終了確認

書式

Sint32 njLoadTextureFinishDMA(void)

引数

なし

戻り値

ロード終了   1
ロード終了していない   -1

解説

ローレベルの即時復帰ロード関数でテクスチャをDMA転送したとき、DMA転送の終了を確認します。 それ以外のところで使用した場合戻り値は、必ず1になります。

以下の関数を使用する場合使用してください。


用例

void FreeTexManage(NJS_TEXMANAGE *texmanage);

/* 簡単なロード関数の例 (メモリにヘッダ付きテクスチャがある場合)*/
Sint32 EasyLoadTexture(NJS_TEXLIST *texlist,Uint32 n,Sint8 *pTexture)
{
    NJS_TEXMANAGE *texmanage;
    NJS_TEXSYSTEM *texsystem;
    Uint32 globalIndex;
    NJS_PVRHEADERDATA pvrh;
    Uint32 *data;
    Uint32 size;
    Sint32 texmng_no;
    /*
    データにはグローバルインデックス、
    PVRヘッダデータがあるものとする
    */
    if((data = njLoadPvrHeader(&pvrh,&globalIndex,pTexture))== NULL){
    /* ヘッダがなかった場合*/
        return -1;
    }

    /* テクスチャマネージメント構造体の空きを取得 */
	texmng_no = njGetTexManageNum(&texmanage,&texsystem);
    
	if(texmng_no < 0){
		return -1;
	}
	texmanage->texsys = texsystem;
    
	/* サーフェスの取得 */
	ret = njGetTexSurfaceEx(texmanage,pvrh);
	if(ret != 1) {
		texmanage->texsys = NULL;
		return -1;
	}
    
	/* グローバルインデックスの設定 */
	if(globalIndex != NJD_GLOBAXINDEX_FIRST_VAL)
		texmanage->texsys->globalIndex = globalIndex;

	/* パレットの設定 */
	if(njCheckPaletteType(pvrh->nTextureType)){
		texmanage->bank = bank;
	}
	else{
		texmanage->bank = NJD_BANK_FIRST_VAL;
	}

	/* パラメータの設定 */
	njSetTextureParamEx(texmanage);
	texmanage->count = 1;
	texmanage->texsys->count = 1;
	_nj_tex_count++;

    /* データ先頭からサイズ分ロードする*/
    size = texmanage->texsys->texsurface.TextureSize;
    if(njLoadTexturePartLowEx(texmanage,data,0,size)== -1){
        /* サーフェスのリリース*/
        njReleaseTextureLowEx(texmanage);
        FreeTexManage(texmanage);
        return -1;
    }
    
    /* DMA終了まで待つ*/
    while(njLoadTextureFinishDMA() != 1);

    /* テクスチャリストとテクスチャメモリリストのリンクをはる */ 
	njLinkTexlist(texlist,n,texmng_no);
	
    return 1;
}

/* 
	テクスチャマネージメント構造体の開放設定
	njClearTextureSurface関数と同じ機能
*/
void FreeTexManage(NJS_TEXMANAGE *texmanage)
{
	NJS_TEXSYSTEM *texsys;
	
	texsys = texmanage->texsys;
	if(texsys != NULL){
		texsys->globalIndex = NJD_GLOBAXINDEX_FIRST_VAL;
	    texsys->texsurface.Type = 0;
		texsys->texsurface.BitDepth = 0;
		texsys->texsurface.PixelFormat = 0;
		texsys->texsurface.nWidth = 0;
		texsys->texsurface.nHeight = 0;
		texsys->texsurface.TextureSize = 0;
		texsys->texsurface.fSurfaceFlags = 0;
		texsys->texsurface.pSurface = 0;
		texsys->count = 0;
	}
    texmanage->bank = NJD_BANK_FIRST_VAL;
    texmanage->tspparam = 0;
    texmanage->texparam = 0;
    texmanage->texsys = NULL;
	texmanage->texflag = 0;
	texmanage->count = 0;

}


備考

使用する場合、他のテクスチャ関数との互換に注意してください。

参照

njLoadTexturePartLowEx() 即時復帰型ローレベル分割テクスチャロード
njLoadRectangleTexturePartLowEx() テクスチャの即時復帰型ローレベル矩形領域のロード
njReadTexturePartLowEx() テクスチャメモリからメインメモリへのデータのローレベルリード
njLoadVQCodebookLowEx() 即時復帰型ローレベルVQコードブックのロード
njLoadTextureManageNum() テクスチャマネージメント番号による即時復帰型テクスチャのロード
njLoadTexturePartManageNum() テクスチャマネージメント番号による即時復帰型テクスチャの分割ロード

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