微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Directx网格顶点问题

如何解决Directx网格顶点问题

| 我使用DirectX创建Boxmesh,我想获得网格中的顶点位置, 但是我发现24个顶点是错误的! 或有什么方法可以使用24个顶点??? 这是我的代码
D3dxcreateBox(pd3dDevice,2,&g_model,NULL);

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

Points->Lock(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},1},1,{0,{1,0})   std::vector<D3DXVECTOR3,std::allocator<D3DXVECTOR3> >
您会注意到某些位置是错误的(-1,0)....     

解决方法

        顶点缓冲区包含法线和位置-奇数向量是法线。 尝试:
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);
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。