比如一个球体,一个杆,它们的相对位置是不变的.

解决方案 »

  1.   

    刚找了一下,好像没有直接可调用的函数
    可以自己写一个,但为了效率,不管是可直接调用的还是自己写的,都不要频繁调用
    获得第一个Mesh的顶点数V1,三角形数F1,
    获得第二个Mesh的顶点数V2,三角形数F2,索引数I = F*3, 属性数A = F。1. 创建要合并的MESH,顶点数为V1+V2,三角形数为F1+F2
    2. LockVertexBuffer,装入第一个Mesh的所有顶点和第二个Mesh的所有顶点
    3. LockIndexBuffer,装入第一个Mesh的所有顶点和第二个Mesh的所有索引,不同的是在装第二个Mesh索引的时候,应全部加上V1
    4. LockAttributeBuffer装入第一个Mesh的所有顶点和第二个Mesh的所有属性,不同的是在装第二个Mesh属性的时候,应全部加上第一个Mesh的总Subset数
    5. Unlock...
      

  2.   

    这里再回复一下楼主那个D3D画线的帖子,因为那个帖子我连续回了3条不能再回复了如果是3D空间里的线,还是用刚才那个接口来画
            ID3DXLine* dxLine;
            D3DXCreateLine(Device, &dxLine);
            D3DXVECTOR3 vNode[5];
            D3DXVECTOR3 vNodeX[2];
            D3DXVECTOR3 vNodeY[2];
            D3DXVECTOR3 vNodeZ[2];        // 正方形
            vNode[0] = D3DXVECTOR3(-50,50,0);
            vNode[1] = D3DXVECTOR3(50,50,0);
            vNode[2] = D3DXVECTOR3(50,-50,0);
            vNode[3] = D3DXVECTOR3(-50,-50,0);
            vNode[4] = D3DXVECTOR3(-50,50,0);
            // X轴
            vNodeX[0] = D3DXVECTOR3(0,0,0);
            vNodeX[1] = D3DXVECTOR3(100,0,0);
            // Y轴
            vNodeY[0] = D3DXVECTOR3(0,0,0);
            vNodeY[1] = D3DXVECTOR3(0,100,0);
            // Z轴
            vNodeZ[0] = D3DXVECTOR3(0,0,0);
            vNodeZ[1] = D3DXVECTOR3(0,0,100);        D3DXMATRIX M;
            M = mView * mProj;   // mView 和 mProj 分别为观察矩阵和投影矩阵;        dxLine->Begin();
            dxLine->DrawTransform(vNode,5,&M,0xffffffff);
            dxLine->DrawTransform(vNodeX,2,&M,0xffff0000);
            dxLine->DrawTransform(vNodeY,2,&M,0xff00ff00);
            dxLine->DrawTransform(vNodeZ,2,&M,0xff0000ff);
            dxLine->End();
            dxLine->Release();