Sint32 njReleaseTextureNumG( globalIndex )
Uint32 globalIndex
globalIndex グローバルインデックス番号
1 成功 −1 失敗
グローバルインデックス番号globalIndexのテクスチャを リファレンスカウンタがゼロになるときテクスチャメモリから リリースします。テクスチャをリリースするとき、テクスチャ管理領域 (テクスチャマネージメント、テクスチャシステム領域)も初期化します。リリースしたテクスチャのtexname.texaddrのゼロクリアはユーザーが行ってください。 この関数を使用した後、ゼロクリアを行わずにテクスチャロードした後に、njReleaseTextureや njReleaseTextureNum関数を使用すると違うテクスチャがリリースされます。
Ninja2からロードしたテクスチャには、texlist.textures[i].attrに NJD_TEXATTR_REGISTRATIONを設定しています。njReleaseTextureNumG関数で テクスチャをリリースした場合、このフラグを消すことができないので 次にテクスチャをロードするときには、NJD_TEXATTR_REGISTRATIONを 消してからロードしてください。
NJS_TEXNAME texname[2]; NJS_TEXLIST texlist ={texname,2}; Sint8 *texbuf; /* Prepare to read in two textures */ NJS_TEXMANAGE texmng[4]; NJS_TEXSYSTEM texsys[4]; njInitTextureEx(texmng,4,texsys,4); texbuf = syMalloc(0x20000); nuInitTextureBuffer(texbuf,0x20000); njSetTextureName(&texname[0],"file1.pvr",100, NJD_TEXATTR_TYPE_FILE|NJD_TEXATTR_GLOBALINDEX); njSetTextureName(&texname[1],"file2.pvr",200, NJD_TEXATTR_TYPE_FILE|NJD_TEXATTR_GLOBALINDEX); /* Load texture */ nuLoadTexture(&texlist); syFree(texbuf); /* Set current texture list*/ njSetTexture(&texlist); /* Release the global index #100 texture in the texlist file1.pvr */ njReleaseTextureNumG(100); texname[0].texaddr = 0;
ロードした他のテクスチャリストで同じテクスチャが登録されているときはすべてのテクスチャリストで解放しない限り、テクスチャメモリ上から解放されることはありません。※グローバルインデックスが同一のものを同一のテクスチャとしています。詳しくは、テクスチャドキュメントを参照してください。
njReleaseTextureAll() テクスチャメモリの全解放 njReleaseTexture() テクスチャメモリのリリース njReleaseTextureNum() テクスチャ番号によるテクスチャメモリのリリース