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テクスチャ
注:このメンバの上位16ビットは、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 横サイズ8ピクセル KM_MAPSIZE_16 横サイズ16ピクセル KM_MAPSIZE_32 横サイズ32ピクセル KM_MAPSIZE_64 横サイズ64ピクセル KM_MAPSIZE_128 横サイズ128ピクセル KM_MAPSIZE_256 横サイズ256ピクセル KM_MAPSIZE_512 横サイズ512ピクセル KM_MAPSIZE_1024 横サイズ1024ピクセル
メンバWidthは、フレームバッファの場合の横方向のサイズです。
メンバVSizeは、テクスチャの場合の縦方向のサイズです。 以下のいずれかが格納されます。
定義 意味 KM_MAPSIZE_8 縦サイズ8ピクセル KM_MAPSIZE_16 縦サイズ16ピクセル KM_MAPSIZE_32 縦サイズ32ピクセル KM_MAPSIZE_64 縦サイズ64ピクセル KM_MAPSIZE_128 縦サイズ128ピクセル KM_MAPSIZE_256 縦サイズ256ピクセル KM_MAPSIZE_512 縦サイズ512ピクセル KM_MAPSIZE_1024 縦サイズ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の変更