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

kmLoadTexture

テクスチャデータの読み込み

書式

KMSTATUS kmLoadTexture( pSurfaceDesc, pTexture )
PKMSURFACEDESC pSurfaceDesc
PKMDWORD pTexture

引数

pSurfaceDesc   (入力)確保したテクスチャサーフェスディスクプリタへのポインタ
pTexture   (入力)テクスチャのピクセルデータ部分を示すポインタ

戻り値

KMSTATUS_SUCCESS   読み込み成功
KMSTATUS_INVALID_ADDRESS   指定されたエリア(Surface)は確保されていない
KMSTATUS_INVALID_TEXTURE_TYPE   無効なテクスチャタイプを指定した

解説

グラフィックメモリのテクスチャ領域に、メインメモリからテクスチャデータを読み込みます。

グラフィックメモリのテクスチャ領域は、以下の関数で確保しておく必要があります。

引数 pSurfaceDescには、確保したテクスチャサーフェス KMSURFACEDESC 型の構造体へのポインタを指定します。

引数pTextureは、メインメモリ上のテクスチャのピクセルデータ部分を示すポインタです。 ここで指定するアドレスは、Kamuiテクスチャフォーマットのテクスチャファイルの先頭アドレス+16で、 32バイトアライメントしたアドレスを指定してください(Kamuiテクスチャのヘッダ部分16バイトをスキップさせます)。 このアドレスを32バイトアライメントしていないと、DMA転送が使用できないため処理が遅くなります。 Kamuiは、読み込むテクスチャのフォーマット形式、サイズなどを、 pSurfaceDescが指定するサーフェスディスクリプタより判断します。

実際のテクスチャのフォーマット形式などが、引数pSurfaceDescで指定するサーフェスディスクリプタの内容と異なっている場合は正しく表示できません。 システムメモリ側のテクスチャデータの先頭アドレスを32Byteアライメントにしてかつサイズが32Byteの倍数であれば、テクスチャメモリへの転送にDMAを使用し、高速な転送が可能となります。

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

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


参照

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

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