void njInitVertexBufferEx( pVBInfo )
NJS_VERTEXBUFFER_INFO *pVBInfo
pVBInfo システム情報を格納した構造体へのポインタ
なし
Ninja2で使用する各種バッファ(Vertex/Frame/Native)の初期化を行います。NJS_VERTEXBUFFER_INFO型構造体に指定されたパラメータに従い、Ninja2の各種システム構成を設定します。 また、フレームバッファメモリ上に、ネイティブデータバッファと表示用フレームバッファを確保します。 ネイティブデータバッファ領域の容量は下記のように求めます。
ネイティブデータバッファ容量 = フレームバッファメモリ全体の容量 − (指定された最大テクスチャ使用サイズ + 表示用フレームバッファの容量)
ただし、ネイティブデータバッファの全容量は、フレームバッファメモリ全容量の半分を越えることはできません。 上記の式で計算した結果がこれを越えた場合は、実際にはフレームバッファメモリ全容量の半分をネイティブデータバッファとして使用します。
NJS_VERTEXBUFFER_INFO gVbinfo; gVbinfo.bNoWaitVsync = FALSE; // レンダリングがVに同期するかどうか gVbinfo.nNumOfMaxPass = 1; // 使用するパス数 gVbinfo.sPassInfo[0].bPreSort = FALSE; // そのパスがプリソートかどうか gVbinfo.sPassInfo[0].nSize[0] = -1; // そのパスの使用するOPAQUE 用バッファ数 gVbinfo.sPassInfo[0].nSize[1] = 0; // そのパスの使用するOPAQUE MODIFIER用バッファ数 gVbinfo.sPassInfo[0].nSize[2] = 100000; // そのパスの使用するTRANS 用バッファ数 gVbinfo.sPassInfo[0].nSize[3] = 0; // そのパスの使用するTRANS MODIFIER 用バッファ数 gVbinfo.sPassInfo[0].nSize[4] = 0; // そのパスの使用するPUNCH THROUGH 用バッファ数 gVbinfo.nNumOfTextures = 100; // 使用するテクスチャの枚数 gVbinfo.nNumOfSmallVQ = 0; // 使用するSMALLVQテクスチャのグループの数 gVbinfo.nTextureMemorySize = 0x400000/4; // テクスチャメモリのサイズを4で割ったもの // ワークの計算と確保 gVbinfo.nVertexBufferSize = njCalcVertexBufferSize( &gVbinfo ); gVbinfo.pVertexBuffer = syMalloc( gVbinfo.nVertexBufferSize ); njInitVertexBufferEx( &gVbinfo ); // 初期化を実行
njInitSystem()関数より後で、他のNinja系初期化関数より前に呼んでください。
njInitSystem() グラフィックシステムの初期化 njCalcVertexBufferSize() njInitVertexBufferExに渡すワークサイズを計算します。