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