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

KMSYSTEMCONFIGSTRUCT

システム設定情報構造体

定義

typedef struct _tagKMSYSTEMCONFIGSTRUCT 
{ 
     KMDWORD dwSize; /* Size Of KMSYSTEMCONFIGSTRUCT */ 
     MDWORD flags; /* System Configuration Flags */ 
     /* for Frame Buffer */ 
     PPKMSURFACEDESC ppSurfaceDescArray; /* Array of SurfaceDesc Pointer */ 
     union{ 
          KMUINT32 nNumOfFrameBuffer; /* Number Of Frame Buffer */ 
          KMUINT32 nStripBufferHeight; /* Height of Strip Buffer */ 
     }fb; 
     /* for Texture Memory */ 
     KMUINT32 nTextureMemorySize; /* Texture Memory size */ 
     KMUINT32 nNumOfTextureStruct; /* number of Texture Control Structure */ 
     KMUINT32 nNumOfSmallVQStruct; /* number of SmallVQ Texture Control Structure */ 
     PKMDWORD pTextureWork; /* Pointer to kamui work area */ 
     /* for Vertex Buffer */ 
     PKMVERTEXBUFFDESC pBufferDesc; /* pointer to KMVERTEXBUFFDESC */ 
     KMUINT32 nNumOfVertexBank; /* Number of VertexBank */ 
     PKMDWORD pVertexBuffer; /* VertexBuffer Pointer */ 
     KMUINT32 nVertexBufferSize; /* VertexBuffer Size */ 
     KMUINT32 nPassDepth; /* Path Depth */ 
     KMPASSINFO Pass[KM_MAX_DISPLAY_LIST_PASS]; /* Pass Information */ 
     /* Reserve Area */ 
     KMDWORD reserved00; /* reserved for future use */ 
     KMDWORD reserved01; /* reserved for future use */ 
     KMDWORD reserved02; /* reserved for future use */ 
     KMDWORD reserved03; /* reserved for future use */ 
     KMDWORD reserved04; /* reserved for future use */ 
     KMDWORD reserved05; /* reserved for future use */ 
     KMDWORD reserved06; /* reserved for future use */ 
     KMDWORD reserved07; /* reserved for future use */ 
} KMSYSTEMCONFIGSTRUCT, *PKMSYSTEMCONFIGSTRUCT; 

メンバ

dwSize   この構造体のサイズ
flags   システム構成に関する各種指定
ppSurfaceDescArray   フレームバッファのサーフェスディスクプリタのポインタの配列
nNumOfFrameBuffer   フレームバッファの数
nStripBufferHeight   ストリップバッファの高さ
nTextureMemorySize   最大テクスチャ使用サイズ
nNumOfTextureStruct   テクスチャ管理構造体の最大数
nNumOfSmallVQStruct   SmallVQテクスチャ管理構造体の最大数
pTextureWork   テクスチャワークエリアのアドレス
pBufferDesc   頂点データバッファデスクリプタへのポインタ
nNumOfVertexBank   頂点のバンク数
pVertexBuffer   メインメモリ上に確保した頂点バッファへのポインタ
nVertexBufferSize   メインメモリ上に確保した頂点データバッファのサイズ(バイト)
nPassDepth   頂点のバンクのパス分割数
Pass   パスの情報
reserved00〜07   リザーブ領域

解説

メンバdwSizeには、KMSYSTEMCONFIGSTRUCT構造体のサイズを指定します。Sizeof(KMSYSTEMCONFIGSTRUCT)を設定してください。

システム構成に関する各種指定を行なうメンバ flagsには次の値が定義されています。

 定義   意味 
 KM_CONFIGFLAG_ENABLE_CLEAR_FRAMEBUFFER   フレームバッファを確保時にバッファの内容をクリア 
 KM_CONFIGFLAG_ENABLE_STRIPBUFFER   StripBuffer形式のフレームバッファを生成 
 KM_CONFIGFLAG_ENABLE_2V_LATENCY   2Vレイテンシモードの指定(これが指定されない場合は3Vレイテンシモードとなる) 
 KM_CONFIGFLAG_NOWAITVSYNC   VSync割り込みを待たずにフレームバッファサーフェスを表示(これが指定されないと VSync割り込みを待つ) 
 KM_CONFIGFLAG_SEPARATE_EACH_PASS   各パス毎に頂点バッファを確保(KMPASSINFOの設定値が有効になる)。 
 KM_CONFIGFLAG_NOWAIT_FINISH_TEXTUREDMA   テクスチャロード関数において、テクスチャをグラフィックメモリへDMA転送を起動した後、その終了を待たずに関数を終了する 

KM_CONFIGFLAG_NOWAIT_FINISH_TEXTUREDMAを指定した場合は、kmQueryFinishLastTextureDMA()関数でDMA転送の終了が確認できます。また、DMA転送中に転送元メモリへのアクセスは必ず避けるようにしてください。

これらのフラグをORして設定します。どのフラグも指定しない場合はゼロを指定してください。

メンバppSurfaceDescArrayには、各フレームバッファ用のKMSURFACEDESC型構造体へのポインタの配列を指定します。 なお、KMSTATUS_NOT_ENOUGH_MEMORYを返した場合にはこのフレームバッファ用構造体の内容は不定となります。 フレームバッファ用構造体の領域と、そこへのポインタの配列は、アプリケーション側で準備する必要があります。

■通常のバッファの場合(ストリップバッファでない場合)

メンバnNumOfFrameBufferには、生成するフレームバッファサーフェスの数を指定します。 ppSurfaceDescArrayは、nNumOfFrameBufferを使用して次のように指定します。

(例)フレームバッファサーフェスの数が2の場合

KMSURFACEDESC Surface1;
KMSURFACEDESC Surface2;
PKMSURFACEDESC ppSurfaceArray[nNumOfFrameBuffer];
ppSurfaceArray[0] = &Surface1;
ppSurfaceArray[1] = &Surface2;
ppSurfaceDescArray = ppSurfaceArray;

■ストリップバッファの場合

メンバ nStripBufferHeightには、ストリップバッファの高さを設定します。32の倍数を指定してください。 メンバnTextureMemorySizeには、最大テクスチャ使用サイズ。これはネイティブデータバッファ領域の容量を決定するのに使用されます。 なお、このサイズは32バイトの倍数でなければなりません。 メンバnNumOfTextureStructには、Kanuiがテクスチャの管理に使用するテクスチャ管理構造体の最大数を指定します。 1つのテクスチャ/フレームバッファサーフェスそして1つの空き領域は、 1つの管理構造体を消費します。 テクスチャを全く使用しない場合でも、ネイティブデータバッファ、フレームバッファ とその他の空き領域のために最低3つ分の構造体用領域が必要です。 なお、この値は、kmuCalculateKamuiWorkareaSizeで求めることができます。 メンバnNumOfSmallVQStructには、Kanuiがテクスチャの管理に使用するSmallVQテクスチャ管理構造体の最大数を指定します。 SmallVQテクスチャは、下記に示すブロック数毎に1つのSmallVQテクスチャ管理構造体と1つのテクスチャ管理構造体を消費します。

 SmallVQ size   ブロック数 
 8x8   16 
 8x8 mipmap   16 
 16x16   16 
 16x16 mipmap   16 
 32x32   8 
 32x32 mipmap   4 
 64x64   2 
 64x64 mipmap   1 

SmallVQテクスチャを全く使用しない場合は、SmallVQテクスチャ管理構造体の最大数はゼロでもかまいません。 なお、この値は、kmuCalculateKamuiWorkareaSize()関数で求めることができます。 メンバpTextureWorkには、Kamuiワークエリアの先頭アドレスを与えます。 ここには、アプリケーションで使用するレンダリングパス・フレームバッファ/テクスチャの数より求められる容量のシステムメモリ領域を準備する必要があります。

なお、ここの容量は、kmuCalculateKamuiWorkareaSize()関数で求めることができます。 メンバpBufferDescには、 KMVERTEXBUFFDESC型の頂点データバッファデスクリプタへのポインタを入力します。 この構造体の領域はアプリケーション側で準備する必要があります。 この構造体は kmStartVertexStrip()関数、kmSetVertex()関数から参照されます。 メンバ nNumOfVertexBankには、 Vertexのバンク数を指定します。 メンバpVertexBufferaには、アプリケーションによりシステムメモリ上に確保した頂点バッファへのポインタをセットします。Kanuiはこれを頂点バッファのベースアドレスとして使用します。なお、このアドレスは32バイトアライメントされている必要があります。

メンバnVertexBufferSizeには、アプリケーションによりシステムメモリ上に確保した頂点データバッファのサイズ(バイト)を指定します。 32バイトの倍数でなければなりません メンバnPassDepthには、VertexBankのパス分割数を指定します。

メンバPass[KM_MAX_PASS]には、パスの情報を設定します。KMPASSINFO構造体の解説を参照してください。

メンバdwRegionArrayFlagには、RegionArrayに関する各種指定を行います。下記のフラグをORして設定します。

 定義   意味 
 KM_PASSINFO_AUTOSORT   現在の描画処理のTranslucentポリゴンのソートモードをAutoSortにする 
 KM_PASSINFO_PRESORT   現在の描画処理のTranslucentポリゴンのソートモードをPreSortにする 
 KM_PASSINFO_USE_ANOTHERLIST   下記の KM_PASSINFO_UA_XXXXX フラグを有効にする 
 KM_PASSINFO_UA_TRMOD_AS_OPMOD   TransModifierは、OpaqueModifierと同じものを使用 
 KM_PASSINFO_UA_OPMOD_AS_TRMOD   OpaqueModifierは、TransModifierと同じものを使用 
 KM_PASSINFO_UA_DISCADING_TRANSPOLY   TransPolygonをPunchThroughPolygonとして使用 

KM_PASSINFO_UA_TRMOD_AS_OPMOD、KM_PASSINFO_UA_OPMOD_AS_TRMOD、KM_PASSINFO_UA_DISCADING_TRANSPOLYは、KM_PASSINFO_USE_ANOTHERLISTが設定されていない場合は無効となります。

メンバpVertexBufferには、アプリケーションによりシステムメモリ上に確保した頂点バッファへのポインタをセットします。Kamuiはこれを頂点バッファのベースアドレスとして使用します。 (Kamui内部でのmallocを避けるため、バッファはアプリケーション側で準備する必要があります。) なお、このアドレスは32バイトアライメントされている必要があります。 この設定はflagsに KM_CONFIGFLAG_SEPARATE_EACH_PASSを設定した場合に有効です。

メンバnVertexBufferSizeには、 アプリケーションによりシステムメモリ上に確保した頂点データバッファのサイズをで指定します。 なお、このサイズは32バイトの倍数でなければなりません。 この設定はflagsに KM_CONFIGFLAG_SEPARATE_EACH_PASSを設定した場合に有効です。 nDirectTransferListには、 2V_LATENCYモードの時に直接転送するListTypeを指定します。 2V_LATENCYモードでない場合はこの設定を行っても無効です。

 定義   意味 
 KM_OPAQUE_POLYGON   OpaquePolygonを直接転送 
 KM_OPAQUE_MODIFIER   OpaqueModifierを直接転送 
 KM_TRANS_POLYGON   TransPolygonを直接転送 
 KM_TRANS_MODIFIER   TransPolygonを直接転送 
 KM_PUNCHTHROUGH_POLYGON   Punchthroughを直接転送 

メンバfBufferSize[KM_MAX_DISPLAY_LIST]には、 各シーンでの、ポリゴンの使用量をリストタイプ別にパーセントで指定します。 これら5つについては、0.0fから100.0fのいずれかを浮動小数で指定します。 これらの合計は100.0fでなければなりません。合計が100.0fを超えた場合の動作は保証しません。 Kamui はこれらの値を元にして、頂点データバッファを各ポリゴンタイプ別に振り分けます。 この設定はflagsに KM_CONFIGFLAG_SEPARATE_EACH_PASSを設定した場合に有効です。

メンバdwOPBMode[KM_MAX_DISPLAY_LIST]には、次の各リスト毎のOPBモードを設定します。

 配列変数   OPBモード 
 dwOPBMode[0]   OpaquePolygon 
 dwOPBMode[1]   OpaqueModifier 
 dwOPBMode[2]   TransPolygon 
 dwOPBMode[3]   TransModifier 
 dwOPBMode[4]   PunchThroughPolygon 

 定義   意味 
 KM_OPB_ALLOCCTRL_NOLIST   リストが存在しない場合 
 KM_OPB_ALLOCCTRL_SMALL   登録するリストが少ない場合 
 KM_OPB_ALLOCCTRL_NORMAL   リストが存在する場合は(通常の設定) 
 KM_OPB_ALLOCCTRL_LARGE   登録するリストが多い場合 


参照

kmSetSystemConfiguration()
 システム構成の設定
kmBeginScene()
 シーンの開始
kmEndScene()
 シーンの終了

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