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() システム構成の設定