##### Kamui2 Library - 構造体/その他のデータ型

# KMSURFACEDESC

フレームバッファ、テクスチャのサーフェスディスクプリタ

### 定義

>     typedef struct tagKMSURFACEDESC
>     {
>          KMDWORD SurfaceType;
>          KMDWORD BitDepth;
>          KMDWORD PixelFormat;
>          union{
>               KMDWORD USize;
>               KMDWORD Width;
>          } u0;
>          union{
>               KMDWORD VSize;
>               KMDWORD Height
>          } u1 ;
>          union{
>               KMDWORD dwTextureSize;
>               KMDWORD dwFrameBufferSize;
>          } uSize ;
>          KMDWORD fSurfaceFlags;
>          PKMDWORD pSurface;

>     }KMSURFACEDESC;
>     typedef KMSURFACEDESC *PKMSURFACEDESC;
>     typedef PKMSURFACEDESC *PPKMSURFACEDESC;

### メンバ

> SurfaceType | サーフェスタイプ
> BitDepth | ビット深さ
> PixelFormat | ピクセルフォーマット
> USize | テクスチャのU値 8〜1024
> Width | フレームバッファの幅
> VSize | テクスチャのV値 8〜1024
> Height | フレームバッファの高さ
> dwTextureSize | テクスチャのサイズ(byte)
> dwFrameBufferSize | フレームバッファのサイズ(byte)
> fSurfaceFlags | サーフェスフラグ
> pSurface | テクスチャインスタンス(PowerVR2 Coreへのポインタ)

### 解説

> テクスチャまたはフレームバッファのサーフェスディスクプリタです。

> どのような表示形式であるかを記述する構造体です。

> メンバSurfaceTypeは、サーフェスのタイプを示します。 以下のいずれかが格納されます。

> 値 | 意味
> KM_SURFACETYPE_FRAMEBUFFER | フレームバッファ
> KM_SURFACETYPE_TEXTURE | テクスチャ
> KM_SURFACETYPE_SMALLVQ_TEXTURE | SmallVQテクスチャ

> 注:このメンバの上位１６ビットは、Ninjaのために予約されています。

> メンバBitDepthは、ピクセルあたり何ビットかを示します。 以下のいずれかが格納されます。

> 値 | 意味
> KM_BITDEPTH_16 | 1pixel = 16bit
> KM_BITDEPTH_24 | 1pixel = 24bit
> KM_BITDEPTH_32 | 1pixel = 32bit

> メンバ PixelFormat は、ピクセルフォーマットを示します。 以下のいずれかが格納されます。

> フレームバッファの場合

> 定義 | 値
> KM_DSPBPP_RGB565 | RGB-565形式
> KM_DSPBPP_RGB555 | RGB-555形式
> KM_DSPBPP_ARGB1555 | ARGB-1555形式
> KM_DSPBPP_RGB888 | RGB-888形式
> KM_DSPBPP_ARGB8888 | ARGB-8888形式

> テクスチャの場合

> 定義 | 値
> KM_PIXELFORMAT_ARGB1555 | ARGB-1555形式
> KM_PIXELFORMAT_RGB565 | RGB-565形式
> KM_PIXELFORMAT_ARGB4444 | ARGB-4444形式
> KM_PIXELFORMAT_YUV422 | YUV-422形式
> KM_PIXELFORMAT_BUMP | バンプマップ
> KM_PIXELFORMAT_PALETTIZED_4BPP | 4bppパレット形式
> KM_PIXELFORMAT_PALETTIZED_8BPP | 8bppパレット形式

> メンバUSizeは、 テクスチャの場合の横方向のサイズです。 以下のいずれかが格納されます。

> 定義 | 意味
> KM_MAPSIZE_8 | 横サイズ８ピクセル
> KM_MAPSIZE_16 | 横サイズ１６ピクセル
> KM_MAPSIZE_32 | 横サイズ３２ピクセル
> KM_MAPSIZE_64 | 横サイズ６４ピクセル
> KM_MAPSIZE_128 | 横サイズ１２８ピクセル
> KM_MAPSIZE_256 | 横サイズ２５６ピクセル
> KM_MAPSIZE_512 | 横サイズ５１２ピクセル
> KM_MAPSIZE_1024 | 横サイズ１０２４ピクセル

> メンバWidthは、フレームバッファの場合の横方向のサイズです。

> メンバVSizeは、テクスチャの場合の縦方向のサイズです。 以下のいずれかが格納されます。

> 定義 | 意味
> KM_MAPSIZE_8 | 縦サイズ８ピクセル
> KM_MAPSIZE_16 | 縦サイズ１６ピクセル
> KM_MAPSIZE_32 | 縦サイズ３２ピクセル
> KM_MAPSIZE_64 | 縦サイズ６４ピクセル
> KM_MAPSIZE_128 | 縦サイズ１２８ピクセル
> KM_MAPSIZE_256 | 縦サイズ２５６ピクセル
> KM_MAPSIZE_512 | 縦サイズ５１２ピクセル
> KM_MAPSIZE_1024 | 縦サイズ１０２４ピクセル

> メンバ Heightはフレームバッファの場合、縦方向のサイズです。

> メンバ dwTextureSizeは、テクスチャ領域のサイズ(byte)です。

> メンバ dwFrameBufferSizeは、フレームバッファ領域のサイズ(byte)です。

> メンバfSurfaceFlagsは、サーフェスの属性を示すフラグです。 以下の値が格納されます。

> フレームバッファの場合

> ビット | 意味
> bit 0 | 0:フル画面バッファ 1:StripBuffer使用

> テクスチャの場合

> ビット | 意味
> bit 0 | 0: Non MipMap 1: MipMapped
> bit 1 | 未使用
> bit 2 | 0: Rectangle 1: Twiddled
> bit 3 | 0: NonVQ 1: VQed Texture
> bit 4 | 0: NonStride 1: Stride Select
> bit 5 | 0: Non Palettized 1: Palettized

> テクスチャの場合、以下のフラグの論理和がセットされます。

> 定義 | 意味
> KM_SURFACEFLAGS_MIPMAPED | ミップマップを持つ
> KM_SURFACEFLAGS_TWIDDLED | TWIDDLED形式
> KM_SURFACEFLAGS_VQ | VQ / SmallVQ 圧縮形式
> KM_SURFACEFLAGS_STRIDE | ストライド指定あり
> KM_SURFACEFLAGS_PALETTIZED | パレットテクスチャ

> メンバ pSurfaceは、サーフェスインスタンスへのポインタです。

> メンバ pVirtualは、Texture instance ( Virtual address on SH4 )

> メンバ pPhysicalは、Texture instance ( physical address on SH4 )

### 参照

> kmChangeContextTextureAddress() | TextureAddressの変更
> kmChangeContextTextureSurface() | TextureSurfaceの変更
> kmChangeStripTextureAddress() | TextureAddressの変更
> kmChangeStripTextureSurface() | TextureSurfaceの変更

KMSURFACEDESC

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