Ninja Library - テクスチャ関数

njTexMallocFixedArea

固定領域のテクスチャメモリの確保

書式

Sint32 njTexMallocFixedArea( size, pSurface)
Uint32 size
Sint32 **pSurface

引数

size   取得するテクスチャメモリのバイトサイズ(最大値4Mバイト)
pSurface   サーフェスポインタ領域のポインタ

戻り値

 成功
−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() 固定領域のテクスチャメモリのフリー

njTexMallocFixedArea
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000