Ninjaライブラリ - テクスチャ関数

njSetTextureParam

テクスチャパラメータの設定

書式

void njSetTextureParam( texmemlist ) 
NJS_TEXMEMLIST *texmemlist 

引数

texmemlist   テクスチャメモリリストのポインタ

戻り値

なし

解説

NJS_TEXMEMLIST構造体のtspparambufferとtexparambufferを設定します。 設定時に参照されるデータはNJS_TEXSURFACE構造体のPixelFormat、nWidth、nHeight、fSurfaceFlags、pSurfaceです。

用例

Mipmapのサイズを強引に変えて表示する関数の例です。
ただし8以上だけです(1,2,4は表示できない)

元の値からtexinfo以下を変更する場合はテクスチャを
リリースするときに元に戻してください。
このサンプルの場合は変更していないので
(コピーしているので)関係ありません。


void njSetTextureMipmapSize( NJS_TEXMEMLIST *texmemlist, Uint32 Size )
{
	NJS_TEXMEMLIST tml;

	/* ミップマップのテクスチャかを確認する */
	if(texmemlist->texinfo.texsurface.fSurfaceFlags
		& NJD_SURFACEFLAGS_MIPMAPED){
	/* 指定したサイズ以上の大きさのテクスチャかを判断する */
		if(texmemlist->texinfo.texsurface.nWidth >= Size){
			/* サイズを設定する */
			tml.texinfo.texsurface.nWidth = Size;
			tml.texinfo.texsurface.nHeight = Size;
			/* テクスチャのサイズを計算する  本当は必要ない*/
			tml.texinfo.texsurface.TextureSize
			 = njCalcTextureSize(Size,Size,
			   tml.texinfo.texsurface.Type >> 16);
			/* PixelFormatを設定する */
			tml.texinfo.texsurface.PixelFormat
			 = texmemlist->texinfo.texsurface.PixelFormat;
			/* オフセットを設定する */
			tml.texinfo.texsurface.pSurface
			 = (Uint32*)((Uint32)texmemlist->texinfo.texsurface.pSurface);
			/* サーフェスフラグを設定する */
			tml.texinfo.texsurface.fSurfaceFlags
			 = texmemlist->texinfo.texsurface.fSurfaceFlags;
			/* テクスチャのパラメータ texparambuffer、
			tspparambufferを求める */
			njSetTextureParam(&tml);
			/* コピーする */
			texmemlist->texparambuffer = tml.texparambuffer;
			texmemlist->tspparambuffer = tml.tspparambuffer;
		}
	}
}


備考

データを変更するときは注意が必要です。 NJS_TEXSURFACE構造体のメンバを変更した場合、テクスチャリリース時には元に戻してください。

njSetTextureParam
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999