dx9 能否把2个Mesh合成一个Mesh? 比如一个球体,一个杆,它们的相对位置是不变的. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 刚找了一下,好像没有直接可调用的函数可以自己写一个,但为了效率,不管是可直接调用的还是自己写的,都不要频繁调用获得第一个Mesh的顶点数V1,三角形数F1,获得第二个Mesh的顶点数V2,三角形数F2,索引数I = F*3, 属性数A = F。1. 创建要合并的MESH,顶点数为V1+V2,三角形数为F1+F22. LockVertexBuffer,装入第一个Mesh的所有顶点和第二个Mesh的所有顶点3. LockIndexBuffer,装入第一个Mesh的所有顶点和第二个Mesh的所有索引,不同的是在装第二个Mesh索引的时候,应全部加上V14. LockAttributeBuffer装入第一个Mesh的所有顶点和第二个Mesh的所有属性,不同的是在装第二个Mesh属性的时候,应全部加上第一个Mesh的总Subset数5. Unlock... 这里再回复一下楼主那个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(); 关于MSDN Library 2008的问题 对MFC的自动代码生成终于有点忍无可忍了 安装数据库后,系统会有哪些改变呢?急 我的工程分为两个模块,窗口模块与功能模块,怎样才能最方便地把功能模块变成一个dll? 如何得到CSocket服务器端断开? 关于CListCtrl的排序问题? 编写邮件查询的程序 如何比较两个表中的记录 Debug/hello.pch找不到,为什么 工具栏怎样使用真彩色图标或256色图标?(一定送分) 关于传输文件夹的问题! 求助:新建项目
可以自己写一个,但为了效率,不管是可直接调用的还是自己写的,都不要频繁调用
获得第一个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...
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();