Проблема вершин сетки Directx - PullRequest
1 голос
/ 14 июня 2011

Я использую DirectX для создания boxmesh, и я хочу получить положение вершин в сетке,

но я считаю, что 24 вершины неверны!

или есть ли способ использовать 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) ....

1 Ответ

2 голосов
/ 14 июня 2011

Ваш буфер вершин содержит как нормали, так и позиции - нечетные векторы являются нормалями.

Попробуйте:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...