Kamui2 Library - テクスチャ制御関数

kmReLoadMipmap

特定のミップマップテクスチャの再読み込み

書式

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()
 テクスチャデータの読み込み

kmReLoadMipmap
COPYRIGHT © NEC Corporation / © SEGA ENTERPRISES, LTD., 1998-2000