求助mesh世界变换后顶点不变的问题
大家好
1、我用D3DXCreateText创建的一个文字Mesh:m_pTextMesh
//创建三维文本网格模型
if( FAILED( D3DXCreateText( g_pd3dDevice, hdc, strVal, 0.0f, fExtrusion, &m_pTextMesh, NULL, NULL)))
{
return FALSE;
}
2、想通过mesh的最大、最小的x,y,z值,来画包围盒。
3、通过世界变换来改变了文字的位置和尺寸,用下面代码重新获得最大、最小的x,y,z值为什么和一开始没有世界变换的mesh顶点坐标相同,求助大家。不知道为什么,有什么方法能得到变换后的mesh最大、最小的x,y,z值。谢谢
VERTEX * pVerts;
m_pFVFTextMesh->LockVertexBuffer(0, (void**)&pVerts);
float fxMin = INFINITY,fxMax = -INFINITY;
float fyMin = INFINITY,fyMax = -INFINITY;
float fzMin = INFINITY,fzMax = -INFINITY;
int numVerts = m_pFVFTextMesh->GetNumVertices();
for (int i =0; i < numVerts; ++i)
{
D3DXVECTOR3 v = pVerts->pos;
fxMin = MinFloat(v.x,fxMin);
fxMax = MaxFloat(v.x,fxMax);
fyMin = MinFloat(v.y,fyMin);
fyMax = MaxFloat(v.y,fyMax);
fzMin = MinFloat(v.z,fzMin);
fzMax = MaxFloat(v.z,fzMax);
++pVerts;
}
m_pFVFTextMesh->UnlockVertexBuffer();
m_bounding_box.m_min.x = fxMin;
m_bounding_box.m_max.x = fxMax;
m_bounding_box.m_min.y = fyMin;
m_bounding_box.m_max.y = fyMax;
m_bounding_box.m_min.z = fzMin;
m_bounding_box.m_max.z = fzMax;
[解决办法]
世界变换矩阵不会改变Mesh中顶点的坐标,绘制的时候才会通过矩阵变换坐标