***** テクスチャメモリリストの説明 *****
●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;
}