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

kmLoadVQCodebook

VQテクスチャのコードブック部分の再読み込み

書式

KMSTATUS kmLoadVQCodebook( pSurfaceDesc, pTexture )
PKMSURFACEDESC pSurfaceDesc
PKMDWORD pTexture

引数

pSurfaceDesc   (入力)確保したテクスチャサーフェスの構造体へのポインタ
pTexture   (入力)メインメモリ上のテクスチャ(コードブック)を示すポインタ

戻り値

KMSTATUS_SUCCESS   成功
KMSTATUS_INVALID_TEXTURE_TYPE   無効なテクスチャサーフェスを指定した

解説

引数pSurfaceDescが指す VQ(または small VQ)テクスチャサーフェスに、 pTextureが指すメインメモリ上の VQ(またはsmall VQ)テクスチャのコードブック部分のみを読み込みます。

引数pSurfaceDescは、 kmCreateTextureSurface()関数 / kmCreateCombinedTextureSurface()関数 / kmCreateContiguousTextureSurface()関数 / kmCreateFixedTextureArea()関数で確保したテクスチャサーフェスです。 KMSURFACEDESC 型の構造体へのポインタです。 このサーフェスのカテゴリは、下記の中のいずれかでなければなりません。

 定義   意味 
 KM_TEXTURE_VQ   VQテクスチャ 
 KM_TEXTURE_VQ_MM   VQミップマップテクスチャ 
 KM_TEXTURE_SMALLVQ   Small VQテクスチャ 
 KM_TEXTURE_SMALLVQ_MM   Small VQミップマップテクスチャ 

ロード済みの VQ(またはsmall VQ)テクスチャの、コードブックのみを書き換えて カラーパレット効果を出したいときに使用します。 システムメモリ側のテクスチャデータの先頭アドレスを32バイトアライメントしていて、 かつサイズが32バイトの倍数である場合、テクスチャメモリへの転送にDMAを使用します。 高速な転送が可能となります。

引数pTextureは、メインメモリ上のテクスチャ(コードブック)を示すポインタです。 32バイトアラインしたアドレスを指定してください。 これは完全な VQ(またはSmall VQ)テクスチャの形式である必要はありませんが、 少なくとも先頭に下表に示すバイト数のコードブックを含んでいる必要があります。

テクスチャサイズとコードブックサイズの関係は下記の通りです。

 Texture Type / Size   Codebook Size (byte) 
 VQ / VQ mipmap   0x800 
 16x16 small VQ    0x80 
 16x16 small VQ mipmap    0x80 
 32x32 small VQ    0x100 
 32x32 small VQ mipmap    0x200 
 64x64 small VQ    0x400 

テクスチャの転送にDMAが使用された場合、その終了を待つか否かを選択することができます。 kmSetSystemConfiguration()関数でflagにKM_CONFIGFLAG_NOWAIT_FINISH_TEXTUREDMAを指定した場合はDMA転送の終了を待たずに関数を終了します。

この場合は、 kmQueryFinishLastTextureDMA()関数でDMA転送の終了を確認することができます。 テクスチャロード前に、CPU側でメインメモリ上のテクスチャデータを直接書き換えた場合などは、 キャッシュのコヒーレンシ確保のため、キャッシュのパージを行った上でロード関数を実行してください (SH4のocbwb命令を実行してください)。


参照

kmCreateTextureSurface()
 テクスチャ用サーフェスの確保
kmCreateCombinedTextureSurface()
 複合テクスチャサーフェスの確保
kmCreateContiguousTextureSurface()
 連続したアドレス領域へのテクスチャサーフェスの作成
kmCreateFixedTextureArea()
 固定テクスチャ領域の確保
kmQueryFinishLastTextureDMA()
 前回のDMA転送によるテクスチャロードの終了チェック
kmSetSystemConfiguration()
 システム構成の設定

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