Ninjaライブラリ - テクスチャ関数

njReleaseTextureLow

テクスチャローレベルリリース

書式

Sint32 njReleaseTextureLow( texmemlist ) 
NJS_TEXMEMLIST *texmemlist 

引数

texmemlist   テクスチャメモリリスト

戻り値

成功   1
失敗   -1

解説

テクスチャメモリリストにあるサーフェスディスクのテクスチャをリリースします。 テクスチャしかリリースしませんので、テクスチャメモリリストの内容は書き換えてください。

用例

***** テクスチャメモリリストの説明 *****

●globalIndex
	グローバルインデックス
	ユーザが使用できる範囲は0〜0xFFFFFFEF
	テクスチャメモリを使用していない場合は0xFFFFFFFFを入れる

●bank
	パレットテクスチャの場合、バンク番号を入れる
	4bppパレットでは0〜63、8bppパレットでは0〜15を入れる
	パレットテクスチャ以外の場合は0xFFFFFFFFを入れる
●tspparambuffer
●texparambuffer
	この2つのパラメータはテクスチャのサーフェスを取得した後、
	njSetTextureParam関数を実行することで設定される
	パレットテクスチャの場合、バンク番号を入れてから
	njSetTextureParam関数を実行すると、バンク番号も反映する
	njSetPaletteBank*関数を実行することでも、
	バンク番号の設定を反映する

●texaddr
	テクスチャメモリにテクスチャをロードした場合、
	NJD_TEXMEMFLAG_TEXMEM(BIT_1)を立てる
	キャッシュテクスチャ領域にロードした場合、
	NJD_TEXMEMFLAG_CACHE(BIT_0)を立てる

●texinfo

●count
	テクスチャをテクスチャメモリにロードした(ロード要求した)
	回数カウントする通常のリリース関数ではカウントが1の場合しか、
	テクスチャはリリースしない
	※この関数ではリリースできます

●dummy
	エラーの場合エラー番号を入れる


/* テクスチャリリース関数の例
(テクスチャリストn番のテクスチャをリリースする) */

void ReleaseTexture(NJS_TEXLIST *texlist,Uint32 n)
{
    NJS_TEXMEMLIST *texmemlist;

    texmemlist = (NJS_TEXMEMLIST*)texlist->textures[n].texaddr;

    /* テクスチャメモリにテクスチャがあるか確認*/
    if(texmemlist->texaddr & NJD_TEXMEMFLAG_TEXMEM){
        /* テクスチャをリリースする*/
        njReleaseTextureLow(texmemlist);
        /* テクスチャメモリリストの使用数から1引く*/
        _nj_tex_count--;
        /* 取得していたメモリリストをフリーする*/
        FreeTexMemList(texmemlist);
    }
}

void FreeTexMemList(NJS_TEXMEMLIST *texmemlist)
{
    texmemlist->globalIndex = 0xFFFFFFFF;
    texmemlist->bank = 0xFFFFFFFF;
    texmemlist->tspparambuffer = 0;
    texmemlist->texparambuffer = 0;
    texmemlist->texinfo.texaddr = 0;
    texmemlist->texinfo.texsurface.Type = 0;
    texmemlist->texinfo.texsurface.BitDepth = 0;
    texmemlist->texinfo.texsurface.PixelFormat = 0;
    texmemlist->texinfo.texsurface.nWidth = 0;
    texmemlist->texinfo.texsurface.nHeight = 0;
    texmemlist->texinfo.texsurface.TextureSize = 0;
    texmemlist->texinfo.texsurface.fSurfaceFlags = 0;
    texmemlist->texinfo.texsurface.pSurface = 0;
    texmemlist->texaddr = 0;
    texmemlist->count = 0;
}

備考

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

詳しくは、TexLowサンプルを参照してください。


参照

njLoadTexturePartLow()

njReleaseTextureLow
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999