D3DXSHPRTCompSplitMeshSC

事前計算済み放射輝度伝播 (PRT) シミュレータの頂点バージョンの圧縮された結果と共に使用されます。D3DXSHPRTCompSuperCluster が呼び出された後で、この関数を使用し、スーパークラスターごとにメッシュを面または頂点のグループに分割できます。各スーパークラスターには、クラスターの 1 つに分類された頂点を含むすべての面が格納されます。この面のセットに接続されるすべての頂点は、返される配列 ppVertStatus (頂点がスーパークラスターに属しているかどうかを示す) にも含まれます。

HRESULT 
D3DXSHPRTCompSplitMeshSC(
  UINT * pClusterIDs,
  UINT NumVertices,
  UINT NumCs,
  UINT * pSClusterIDs,
  UINT NumSCs,
  LPVOID pInputIB,
  BOOL InputIBIs32Bit,
  UINT NumFaces,
  LPD3DXBUFFER * ppIBData,
  UINT * pIBDataLength,
  BOOL OutputIBIs32Bit,
  LPD3DXBUFFER * ppFaceRemap,
  LPD3DXBUFFER * ppVertData,
  UINT * pVertDataLength,
  UINT * pSCClusterList,
  D3DXSHPRTSPLITMESHCLUSTERDATA* pSCData
);

パラメータ

  • pClusterIDs
    uNumVerts クラスター ID (圧縮されたバッファーから抽出)
  • NumVertices
    元のメッシュ内の頂点の数
  • NumCs
    クラスターの数 (圧縮の入力パラメーター)
  • pSClusterIDs
    スーパークラスター ID を含むサイズ uNumC の配列
  • NumSCs
    D3DXSHPRTCompSuperCluster に割り当てられたスーパークラスターの数
  • pInputIB
    メッシュの行インデックス バッファー。フォーマットは InputIBIs32Bit に依存します。
  • InputIBIs32Bit
    TRUE の場合は、インデックス バッファーが 32 ビットに設定され、そうでない場合は 16 ビットに設定されます。
  • NumFaces
    元のメッシュの面の数 (pInputIB はこの長さの 3 倍)
  • ppIBData
    最終的な分割面を含む行インデックス バッファー。フォーマットは bIBIs32Bit によって決まります。関数によって割り当てられます。
  • pIBDataLength
    ppIBData の長さ。関数で割り当てられます。
  • OutputIBIs32Bit
    TRUE の場合、符号なし整数配列が割り当てられ、そうでない場合は符号なし短配列が割り当てられます。
  • ppFaceRemap
    ppIBData の各面の元の面へのマッピング。長さは *pIBDataLength の 1/3 です。
  • ppVertData
    新しい頂点データの構造体。pVertDataLength のサイズです。
  • pVertDataLength
    分割メッシュ内の新しい頂点の数。関数で割り当てられます。
  • pSCClusterList
    各スーパークラスターに対応する (Cluster* fields) を pSCData がインデックス付けしている、長さ uNumC の配列。スーパークラスターによってソートされたクラスターを格納しています。
  • pSCData
    スーパークラスターごとの構造体。インデックスを ppIBData、pSCClusterList、および ppVertData に格納します。

戻り値

成功すると、D3D_OK を返します。失敗した場合は、次の戻り値のいずれかを返します。D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA、E_OUTOFMEMORY

要件

ヘッダー: D3DX9Mesh.h 宣言

ライブラリ: D3dx9.lib 内容