KMSTATUS kmReLoadMipmap( pSurfaceDesc, pTexture, nMipmapCount )
PKMSURFACEDESC pSurfaceDesc
PKMVOID pTexture
KMINT32 nMipmapCount
pSurfaceDesc (入力)リロード先 pTexture (入力)リロード元 nMipmapCount (入力)読み込むミップマップテクスチャのレベル
KMSTATUS_SUCCESS 成功 KMSTATUS_INVALID_PARAMETER パラメータが不正 KMSTATUS_INVALID_TEXTURE_TYPE 無効なテクスチャタイプを指定した
kmCreateTextureSurface()関数 / kmCreateCombinedTextureSurface()関数 / kmCreateContiguousTextureSurface()関数 / kmCreateFixedTextureArea()関数で確保したグラフィックメモリ上のテクスチャ領域に、pTextureが指すメインメモリ上のミップマップテクスチャデータを上書きします。指定できるテクスチャ(サーフェス)のタイプは以下のいずれかです。
定義 意味 KM_TEXTURE_TWIDDLED_MM Twiddledミップマップテクスチャ KM_TEXTURE_VQ_MM VQミップマップテクスチャ KM_TEXTURE_PALETTIZE4_MM 4Bit(16色)パレットミップマップテクスチャ KM_TEXTURE_PALETTIZE8_MM 8Bit(256色)パレットミップマップテクスチャ KM_TEXTURE_SMALLVQ_MM Small VQミップマップテクスチャ
読み込むテクスチャのフォーマット形式、サイズなどは、 pSurfaceDescが指すサーフェスディスクリプタより判断します。 システムメモリ側のテクスチャデータの先頭アドレスを32バイトアライメントに配置しサイズが32バイトの倍数であれば、テクスチャメモリへの転送にDMAを使用して高速な転送を行います。 テクスチャの転送にDMAが使用された場合、その終了を待つか否かを選択することができます。
引数pSurfaceDescは、 kmCreateTextureSurface()関数 / kmCreateCombinedTextureSurface()関数 / kmCreateContiguousTextureSurface()関数 / kmCreateFixedTextureArea()関数で確保したテクスチャサーフェス KMSURFACEDESC 型の構造体へのポインタ、 つまりリロード先です。
引数pTextureは、メインメモリ上のテクスチャのピクセルデータ部分を示すポインタで、 nMipmapCountが指すミップマップレベルのテクスチャデータの先頭を示します。 つまりリロード元です。
引数nMipmapCountには、読み込むミップマップテクスチャのレベルを指定します。 下記のenum値のなかからいずれかひとつを指定することができます。
定義 意味 KM_MAPSIZE_1 1x1 KM_MAPSIZE_2 2x2 KM_MAPSIZE_4 4x4 KM_MAPSIZE_8 8x8 KM_MAPSIZE_16 16x16 KM_MAPSIZE_32 32x32 KM_MAPSIZE_64 64x64 KM_MAPSIZE_128 128x128 KM_MAPSIZE_256 256x256 KM_MAPSIZE_512 512x512 KM_MAPSIZE_1024 1024x1024
kmSetSystemConfiguration()関数でflagにKM_CONFIGFLAG_NOWAIT_FINISH_TEXTUREDMAを指定した場合はDMAの終了を待たずに関数を終了します。 この場合は、 kmQueryFinishLastTextureDMA()関数でDMA転送の終了を確認することができます。
テクスチャロード前に、CPU側でメインメモリ上のテクスチャデータを直接書き換えた場合などは、 キャッシュのコヒーレンシ確保のため、キャッシュのパージを行った上でロード関数を実行してください (SH4のocbwb命令を実行してください)。
この関数によるテクスチャデータの転送は、データ転送先・転送元アドレスが32バイト境界とならず、 DMAが使用できないため kmLoadTexture()関数より遅くなります。
VQ-Mipmapのリロード時には、リロード先とリロード元のテクスチャのコードブックが 一致していないと正しく表示されません。注意してください。 また、VQ-Mipmapのリロード時には、1x1 Mipmapが指定された場合はなにもしません。
Palettized-Mipmapのリロード時には、リロード先とリロード元のテクスチャの パレットデータが一致していないと正しい絵が表示されません。注意してください。
KamuiテクスチャフォーマットにおけるTwiddled mipmapファイルの先頭から各mipmapレベルへのオフセットと各mipmapレベルのバイト数。 (ヘッダ部16バイトをのぞく)
SIZE OFFSET BYTES 1x1 6 2 2x2 8 8 4x4 16(10h) 32(20h) 8x8 48(30h) 128(80h) 16x16 176(B0h) 512(200h) 32x32 688(2B0h) 2048(800h) 64x64 2736(AB0h) 8192(2000h) 128x128 10928(2AB0h) 32768(8000h) 256x256 43696(AAB0h) 131072(20000h) 512x512 174768(2AAB0h) 524288(80000h) 1024x1024 699056(AAAB0h) 2097152(200000h)
KamuiテクスチャフォーマットにおけるVQ mipmapファイルの先頭から 各mipmapレベルへのオフセットと各mipmapレベルのバイト数。 (ヘッダ部16バイトをのぞく)
SIZE OFFSET BYTES 1x1 -- -- 2x2 2048 + 1 1 4x4 2048 + 2 4 8x8 2048 + 6 16(10h) 16x16 2048 + 22(16h) 64(40h) 32x32 2048 + 86(56h) 256(100h) 64x64 2048 + 342(156h) 1024(400h) 128x128 2048 + 1366(556h) 4096(1000h) 256x256 2048 + 5462(1556h) 16384(4000h) 512x512 2048 + 21846(5556h) 65536(10000h) 1024x1024 2048 + 87382(15556h) 262144(40000h)
KamuiテクスチャフォーマットにおけるPalettized 4bpp mipmapファイルの先頭から 各mipmapレベルへのオフセットと各mipmapレベルのバイト数。 (ヘッダ部16バイトをのぞく)
SIZE OFFSET BYTES 1x1 1 0.5 2x2 2 2 4x4 4 8 8x8 12(0Ch) 32(20h) 16x16 44(2Ch) 128(80h) 32x32 172(ACh) 512(200h) 64x64 684(2ACh) 2048(800h) 128x128 2732(AACh) 8192(2000h) 256x256 10924(2AACh) 32768(8000h) 512x512 43692(AAACh) 131072(20000h) 1024x1024 174764(2AAACh) 524288(80000h)
KamuiテクスチャフォーマットにおけるPalettized 8bpp mipmapファイルの先頭から 各mipmapレベルへのオフセットと各mipmapレベルのバイト数。 (ヘッダ部16バイトをのぞく)
SIZE OFFSET BYTES 1x1 3 1 2x2 4 4 4x4 8 16(10h) 8x8 24(18h) 64(40h) 16x16 88(58h) 256(100h) 32x32 344(158h) 1024(400h) 64x64 1368(558h) 4096(1000h) 128x128 5464(1558h) 16384(4000h) 256x256 21848(5558h) 65536(10000h) 512x512 87384(15558h) 262144(40000h) 1024x1024 349528(55558h) 1048576(100000h)
kmCreateTextureSurface() テクスチャ用サーフェスの確保 kmCreateCombinedTextureSurface() 複合テクスチャサーフェスの確保 kmCreateContiguousTextureSurface() 連続したアドレス領域へのテクスチャサーフェスの作成 kmCreateFixedTextureArea() 固定テクスチャ領域の確保 kmSetSystemConfiguration() システム構成の設定 kmQueryFinishLastTextureDMA() 前回のDMA転送によるテクスチャロードの終了チェック kmLoadTexture() テクスチャデータの読み込み