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

# kmCreateTextureSurface

テクスチャ用サーフェスの確保

### 書式

> `KMSTATUS kmCreateTextureSurface( pSurfaceDesc, nWidth, nHeight, nTextureType )
> PKMSURFACEDESC pSurfaceDesc
> KMINT32 nWidth
> KMINT32 nHeight
> KMTEXTURETYPE nTextureType
> `

### 引数

> pSurfaceDesc | (出力)取得するサーフェスディスクプリタへのポインタ
> nWidth | (入力)テクスチャの横サイズ
> nHeight | (入力)テクスチャの縦サイズ
> nTextureType | (入力)テクスチャの形式

### 戻り値

> KMSTATUS_SUCCESS | 成功
> KMSTATUS_INVALID_TEXTURE_TYPE | 無効なテクスチャタイプを指定した
> KMSTATUS_NOT_ENOUGH_MEMORY | メモリ容量が足りない

### 解説

> テクスチャメモリ上にテクスチャ用サーフェスを確保します。

> この関数ですべての形式のテクスチャサーフェスを確保することができます。 これで確保した領域は kmFreeTexture()関数で解放してください。

> 引数pSurfaceDescは、Surface情報を取得するKMSURFACEDESC型の構造体へのポインタです。 戻り値にKMSTATUS_NOT_ENOUGH_MEMORYが返された場合には不定となります。

> 引数nWidth、nHeightには、テクスチャの横サイズ、縦サイズを指定します。 MIPMAPを使用する場合にはトップレベルのテクスチャサイズを指定します。 指定する値は 8、16、32、64、128、256、512、1024のいずれかでなければなりません。

> 引数nTextureTypeには、テクスチャの形式を指定します。 以下のカテゴリコード、ピクセルフォーマットコードから一つずつ選び出し、論理和(or)して与えます。

> ■カテゴリコード

> 定義 | 意味
> KM_TEXTURE_TWIDDLED | Twiddledフォーマット
> KM_TEXTURE_TWIDDLED_RECTANGLE | 長方形Twiddledフォーマット
> KM_TEXTURE_TWIDDLED_MM | TwiddledフォーマットMipmapあり
> KM_TEXTURE_VQ | VQ圧縮形式
> KM_TEXTURE_VQ_MM | VQ圧縮形式Mipmapあり
> KM_TEXTURE_SMALLVQ | small VQ圧縮形式
> KM_TEXTURE_SMALLVQ_MM | small VQ圧縮形式Mipmapあり
> KM_TEXTURE_PALETTIZE4 | 4bppパレット形式
> KM_TEXTURE_PALETTIZE4_MM | 4bppパレット形式Mipmapあり
> KM_TEXTURE_PALETTIZE | 8bppパレット形式
> KM_TEXTURE_PALETTIZE8_MM | 8bppパレット形式Mipmapあり
> KM_TEXTURE_RECTANGLE | 矩形
> KM_TEXTURE_STRIDE | 矩形(ストライド指定)

> ■ピクセルフォーマットコード

> 定義 | 意味
> KM_TEXTURE_1555 | ARGB-1555形式
> KM_TEXTURE_565 | RGB-565形式
> KM_TEXTURE_4444 | ARGB-4444形式
> KM_TEXTURE_YUV422 | YUV-422形式
> KM_TEXTURE_BUMP | バンプマップ

> 注) パレット形式テクスチャ(KM_TEXTURE_PALETTIZED4、KM_TEXTURE_PALETTIZED4_MM、KM_TEXTURE_PALETTIZED8、KM_TEXTURE_PALETTIZED8_MM) の場合は、ピクセルフォーマットは指定できません。

> パレット形式テクスチャのピクセルフォーマットは パレットの設定( kmSetPaletteMode()関数 )で指定します。

> Kamuiでは、メモリアクセスの高速化のため、テクスチャのアドレスは極力2KByte境界に整列するように配置されます。 そのためフレームバッファの空き容量の合計が、確保しようとするテクスチャの容量分以上残っていても、 テクスチャサーフェスを作成できないことがあります。 この場合は kmGarbageCollectTexture()関数でガベージコレクションを行ってください。 なお、テクスチャサーフェスの先頭アドレスとサイズはKamuiによって32Byteアライメントされます。

### 備考

> この関数は kmSetSystemConfiguration()関数の呼び出しの後に実行しなければいけません。 テクスチャメモリを効率的に使用するためのヒントとしては、 できるだけ多くのテクスチャサーフェスを同時に確保／解放するようにしてください。 また、フレームバッファ領域、ネイティブデータ領域の作成はテクスチャサーフェスの生成より前に呼び出し、 アプリケーション終了まで極力これらの解放・再作成を避けてください。

### 参照

> kmGarbageCollectTexture() | テクスチャメモリのガーベジコレクション
> kmSetSystemConfiguration() | システム構成の設定

kmCreateTextureSurface

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