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

# kmLoadRectangleTexturePart

テクスチャデータの矩形領域転送

### 書式

> `KMSTATUS SkmLoadRectangleTexturePart( pSurfaceDesc, pTexture, width, height, dst_X, dst_Y, src_X, src_Y, src_U )
> PKMSURFACEDESC pSurfaceDesc
> PKMDWORD pTexture
> KMUINT32 width
> KMUINT32 height
> KMUINT32 dst_X
> KMUINT32 dst_Y
> KMUINT32 src_X
> KMUINT32 src_Y
> KMUINT32 src_U
> `

### 引数

> pSurfaceDesc | (入力)テクスチャサーフェスディスクプリタへのポインタ
> pTexture | (入力)テクスチャのピクセルデータ部分を示すポインタ
> width | (入力)転送する矩形領域の幅(テクセル数)
> height | (入力)転送する矩形領域の高さ(テクセル数)
> dst_X | (入力)転送先テクスチャ中の矩形領域のX座標
> dst_Y | (入力)転送先テクスチャ中の矩形領域のY座標
> src_X | (入力)転送元テクスチャ中の矩形領域のX座標
> src_Y | (入力)転送元テクスチャ中の矩形領域のY座標
> src_U | (入力)転送元テクスチャの幅(テクセル数)

### 戻り値

> KMSTATUS_SUCCESS | 成功
> KMSTATUS_INVALID_TEXTURE_TYPE | 無効なテクスチャタイプ

### 解説

> メインメモリ上のテクスチャデータの矩形領域(部分)をグラフィックメモリ上のRectangle/Stride形式テクスチャ矩形領域に書き込みます。

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

> - kmCreateTextureSurface()関数
> - kmCreateCombinedTextureSurface()関数
> - kmCreateContiguousTextureSurface()関数
> - kmCreateFixedTextureArea()関数

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

> 引数pTextureには、メインメモリ上のテクスチャのピクセルデータ部分を示すポインタを指定します。

> 引数width, heightには、転送する矩形領域の幅と高さをテクセル数で指定します。

> 引数dst_X, dst_Yは、転送先テクスチャ中の矩形領域のXY座標です。 転送先テクスチャの左下(先頭)テクセルからの相対テクセル数(オフセット)で指定します。

> 引数src_X, src_Yは、転送元テクスチャ中の矩形領域のXY座標です。 転送元テクスチャの左下(先頭)テクセルからの相対テクセル数(オフセット)で指定します。

> 引数src_Uには、転送元テクスチャの幅をテクセル数で指定します。 この値にゼロを指定すると転送元テクスチャのサイズは矩形領域の幅と高さが等しいものとみなします。 このときは、src_X,src_Yの値は無視され、ゼロとみなされます Rectangle/Stride形式テクスチャの一部を書き換えることができます。 転送先の矩形領域は( dst_X, dst_Y )-( dst_X + width, dst_Y + height )です。 転送元の矩形領域は、( src_X, src_Y )-( src_X + width, src_Y + height )です。

> 引数src_Uにゼロを指定した場合は、転送元テクスチャのサイズは矩形領域の幅と高さ(width,height)と等しいものとみなします。 この場合は、src_X、src_Yは無視されます。

> メインメモリの矩形領域データの左端テクセルのアドレスを32Byteアライメントしていて、かつサイズが32Byteの倍数である場合、データの転送にDMAを使用します。 高速な転送が可能となります。

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

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

> これら以外のpSurfaceDescを指定した場合には、KMSTATUS_INVALID_TEXTURE_TYPEを返します。 矩形領域は、転送先・転送元テクスチャの領域内に完全に含まれていなければなりません。 そうでない場合には、転送先テクスチャを含め、他のテクスチャのデータが破壊される場合があります。 Kamuiでは、このチェックは行いません。

### 参照

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

kmLoadRectangleTexturePart

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