void njSetTextureName( texname, addr, globalIndex, attr )
NJS_TEXNAME *texname
void *addr
Uint32 globalIndex
Uint32 attr
texname NJS_TEXNAME構造体のポインタ addr ファイル名またはメモリテクスチャの先頭アドレスまたはNJS_TEXINFO構造体のポインタ globalIndex グローバルインデックス attr テクスチャのアトリビュート
なし
ファイルからテクスチャをロードするときattrにNJD_TEXATTR_TYPE_FILEを指定し addrにファイル名を設定します。 ファイル内のグローバルインデックスを使用しない場合、 またはPVR形式のテクスチャにグローバルインデックスのチャンクが無い場合、 attrにNJD_TEXATTR_GLOBALINDEXを設定し、globalIndexにグローバルインデックスを設定してください。Ninja2からPVRヘッダがあるメモリテクスチャをロードするときは attrにNJD_TEXATTR_TYPE_MEMORYを指定し、addrにテクスチャデータの先頭アドレスを設定できるように なりました。(従来通りの設定もできます) グローバルインデックスがない場合には、ファイルテクスチャと同様の方法で設定してください。
PVRヘッダのないメモリテクスチャの場合は、addrにnjSetTextureInfo関数で設定した NJS_TEXINFO構造体のポインタを設定します。 attrには、NJD_TEXATTR_TYPE_MEMORY、NJD_TEXATTR_GLOBALINDEXを設定し、 globalIndexにはグローバルインデックスを設定してください。
フレームバッファテクスチャを使用する場合は、addrにnjSetTextureInfo関数で設定した NJS_TEXINFO構造体のポインタを設定します。 attrには、NJD_TEXATTR_TYPE_SURFACE、NJD_TEXATTR_GLOBALINDEXを設定し、 globalIndexにはグローバルインデックスを設定してください。
レンダテクスチャ、YUV420テクスチャを使用する場合は、addrにnjSetTextureInfo関数で 設定したNJS_TEXINFO構造体のポインタを設定します。 attrには、NJD_TEXATTR_TYPE_SURFACE、NJD_TEXATTR_GLOBALINDEXを設定し、 globalIndexにはグローバルインデックスを設定してください。
/* ファイルテクスチャの設定 */ njSetTextureName(&texname[0],"file.pvr",0,NJD_TEXATTR_TYPE_FILE); /* ファイルテクスチャとグローバルインデックス100番の設定 */ njSetTextureName(&texname[0],"file1.pvr",100,NJD_TEXATTR_TYPE_FILE|NJD_TEXATTR_GLOBALINDEX); /* グローバルインデックスとPVRヘッダがあるメモリテクスチャの設定 */ njSetTextureName(&texname[0],pTexmem,0,NJD_TEXATTR_TYPE_MEMORY); または njSetTextureInfo(&info,pTexmem,0,0,0); njSetTextureName(&texname[0],&info,0,NJD_TEXATTR_TYPE_MEMORY); /* PVRヘッダがあるメモリテクスチャの設定 とグローバルインデックス100番の設定*/ njSetTextureName(&texname[0],pTexmem,100,NJD_TEXATTR_TYPE_MEMORY|NJD_TEXATTR_GLOBALINDEX); または njSetTextureInfo(&info,pTexmem,0,0,0); njSetTextureName(&texname[0],&info,100,NJD_TEXATTR_TYPE_MEMORY|NJD_TEXATTR_GLOBALINDEX); /* ヘッダがないメモリテクスチャの設定 とグローバルインデックス100番の設定*/ njSetTextureInfo(&info,pTexmem,NJD_TEXFMT_RGB_565 | NJD_TEXFMT_TWIDDLED, 128,128 ); njSetTextureName(&texname[0],&info,100,NJD_TEXATTR_TYPE_MEMORY|NJD_TEXATTR_GLOBALINDEX); /* フレームバッファテクスチャを使用する設定 */ njSetTextureInfo(&info,NULL,NJD_TEXFMT_RGB_565 | NJD_TEXFMT_STRIDE, 1024,512 ); njSetTextureName(&texname[0],&info,100,NJD_TEXATTR_TYPE_SURFACE|NJD_TEXATTR_GLOBALINDEX); /* レンダテクスチャ,YUV420テクスチャを使用する設定 */ njSetTextureInfo(&info,NULL,NJD_TEXFMT_RGB_565 | NJD_TEXFMT_STRIDE, 1024,512 ); njSetTextureName(&texname[0],&info,100,NJD_TEXATTR_TYPE_SURFACE|NJD_TEXATTR_GLOBALINDEX); ただし、デフォルトのnuLoadTexture,nuLoadTextureNumで使用できる設定。
ここで設定したグローバルインデックスはNJS_TEXNAME構造体のtexaddrにいったん保存され テクスチャのロード時にNJS_TEXMANAGE構造体のglobalIndexに渡されます。 そのとき、NJS_TEXNAME構造体のtexaddrは書き換えられてしまいます。 テクスチャをロードし、テクスチャをリリース、その後もう一度テクスチャをロードする場合には もう一度設定し直してください。
njSetTextureInfo() テクスチャ情報構造体へのデータのセット