2011-06-14 119 views
1

我使用DirectX創建了一個boxmesh,並且我想要獲得網格中的頂點位置,但我發現24個頂點是錯誤的!Directx網格頂點問題

還是有什麼方法可以使用24個頂點? 這裏是我的代碼

D3DXCreateBox(pd3dDevice,2,2,2,&g_model,NULL); 

DWORD size=g_model->GetNumVertices();g_model->GetVertexBuffer(&Points); 

Points->Lock(0,0,(void**)&v,0); 


for(int i=0;i<size;i++) 
{ 
    D3DXVECTOR3 vertcle(v[i].x,v[i].y,v[i].z); 
    Pos.push_back(vertcle); 
}; 

Points->Unlock(); 

的vectorPos是這樣的:

Pos[24]({-1, -1, -1},{-1, 0, 0},{-1, -1, 1},{-1, 0, 0},{-1, 1, 1},{-1, 0, 0},{-1, 1, -1},{-1, 0, 0},{-1, 1, -1},{0, 1, 0},{-1, 1, 1},{0, 1, 0},{1, 1, 1},{0, 1, 0},{1, 1, -1},{0, 1, 0},{1, 1, -1},{1, 0, 0},{1, 1, 1},{1, 0, 0},{1, -1, 1},{1, 0, 0},{1, -1, -1},{1, 0, 0}) std::vector<D3DXVECTOR3,std::allocator<D3DXVECTOR3> > 你可以看到一些位置是錯誤的(1,0,0)....

+0

你用什麼格式來定義你的頂點?我試圖做一些非常相似的事情,但我不知道D3DXCreateBox如何定義vértices的格式。 – nairdaen 2015-02-09 00:00:39

回答

1

你的頂點緩衝區包含法線和位置 - 奇怪的向量是法線。

嘗試:

for(int i=0;i<size;i++) 
{ 
    D3DXVECTOR3 vertcle(v[2*i].x,v[2*i].y,v[2*i].z); 
    Pos.push_back(vertcle); 
} 
+0

謝謝!上帝保佑它!沒有預訂告訴我這樣做! – user790894 2011-06-14 10:53:21