读书人

mesh世界变换后顶点不变的有关问题

发布时间: 2013-01-06 15:44:47 作者: rapoo

求助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中顶点的坐标,绘制的时候才会通过矩阵变换坐标

读书人网 >网络游戏

热点推荐