• 締切済み

directxでの頂点座標の取得

線と面の当たり判定をするのにメッシュの頂点座標を1面おきに取得したいのですが上手くいきません(確実に線とメッシュが交差するように設定しても正しく処理されません)。 どの辺りが間違っているか教えてもらえるとうれしいです。 g_pMesh、g_dwNumMaterialsはグローバルで宣言されてます。 BYTE *pVertexBuffer; D3DXVECTOR3 v[3]; g_pMesh->LockVertexBuffer( D3DLOCK_READONLY, (LPVOID*)&pVertexBuffer ); DWORD FVF = g_pMesh->GetFVF(); DWORD VertexSize = D3DXGetFVFVertexSize( FVF ); for( DWORD i = 0; i < g_dwNumMaterials; i+=3 ) { v[0] = *(D3DXVECTOR3*)pVertexBuffer; pVertexBuffer += VertexSize; v[1] = *(D3DXVECTOR3*)pVertexBuffer; pVertexBuffer += VertexSize; v[2] = *(D3DXVECTOR3*)pVertexBuffer; pVertexBuffer += VertexSize; } g_pMesh->UnlockVertexBuffer(); これはhttp://www9.plala.or.jp/dequartet/directx_tips.htmのサンプルを改良したものです。 そこで大まかな説明もされています。

みんなの回答

  • i-kujou
  • ベストアンサー率50% (13/26)
回答No.1

3Dについては専門家ではないのではずしているかもしれませんが、 モデルデータが頂点インデックスを利用しているということはありませんか? その場合は頂点バッファーから頂点を3点づつとりだしても、トライアングルの頂点にはならないと思います。

noname#142252
質問者

補足

頂点をあえて 1 - 2 l / l 3 - 4 ではなく 1 - 2   6 l / +  / l 3   5 - 4 でもダメでした

関連するQ&A