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;
}
}
}