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