Sint32 njTexMallocFixedArea( size, pSurface)
Uint32 size
Sint32 **pSurface
size 取得するテクスチャメモリのバイトサイズ(最大値4Mバイト) pSurface サーフェスポインタ領域のポインタ
1 成功 −1 失敗
テクスチャメモリから最大サイズは4Mバイトの固定領域を確保します。ただし、固定領域は1つしか取得することができません。この領域を利用し ユーザーが独自のテクスチャサーフェス取得ルーチンを作成することができます。
テクスチャの固定領域を使用する場合、njInitVertexBufferEx関数で設定するテクスチャサイズは固定領域のサイズを足したものを設定します。 また、この領域はnjReleaseTextureAll()関数などを実行しても登録されたテクスチャはリリースされません。 この関数実行後、njInitVertexBufferEx()関数、またはnjChangeTextureMemorySize()関数 を実行したときにpSurfaceに取得したサーフェス領域が設定されます。
取得したテクスチャメモリの固定領域はガベージコレクションの対象になりません。 テクスチャメモリの固定領域の解放はnjTexFreeFixedArea関数を使用します。 固定領域解放後に反映させるときも、njInitVertexBufferEx関数、 またはnjChangeTextureMemorySize()関数を実行します。
#define TEX_FIXED_AREA_SIZE (0x400000) #define TEX_FREE_AREA_SIZE (0x100000) Sint8* start_texfixedarea; Sint8* texfixedarea; Uint32 texfixedarea_size; Sint32 UserInit(void) { : /* 固定領域は4Mバイト取得される */ if(njTexMallocFixedArea(TEX_FIXED_AREA_SIZE,&start_texfixedarea) < 0){ return USER_EXIT; } gVbinfo.bNoWaitVsync = FALSE; gVbinfo.nNumOfMaxPass = 1; gVbinfo.sPassInfo[0].bPreSort = FALSE; gVbinfo.sPassInfo[0].nSize[0] = -1; gVbinfo.sPassInfo[0].nSize[1] = 0x100000/4; gVbinfo.sPassInfo[0].nSize[2] = 0x200000/4; gVbinfo.sPassInfo[0].nSize[3] = 0x100000/4; gVbinfo.sPassInfo[0].nSize[4] = 0x100000/4; gVbinfo.nNumOfTextures = TEX_NORMAL_NUM; gVbinfo.nNumOfSmallVQ = TEX_SMALLVQ_NUM; gVbinfo.nTextureMemorySize = (TEX_FIXED_AREA_SIZE + TEX_FREE_AREA_SIZE)/4;/* この設定に注意する */ /* 通常のテクスチャ領域は1Mバイト取得される */ njInitVertexBufferEx( &gVbinfo ); /* njInitVertexBufferEx関数実行後、start_texfixedareaに取得した サーフェスが設定される */ texfixedarea_size = TEX_FIXED_AREA_SIZE; texfixedarea = start_texfixedarea; : }
テクスチャメモリの固定領域の取り扱いは注意してください。
njTexFreeFixedArea() 固定領域のテクスチャメモリのフリー