|
|
我要做的是人物头上的文字
已经求出单个人物头上的文字的屏幕坐标,而且Z深度也是正确的,但这时如果有第二个人物进来的话,头上的文字就不对了。。。
各位高人希望帮我解惑
D3DXMATRIX WorldMat,Viewmat,Projmat;//各个坐标系矩阵
D3DVIEWPORT9 vv;//取得视口
D3DXVECTOR3 a(chapos.x,chapos.y,chapos.z);//当前人物的位置
D3DXVECTOR3 b; //输出到屏幕坐标包括Z深度
m_pD3dDevice->GetViewport(&vv);
m_pD3dDevice->GetTransform(D3DTS_WORLDMATRIX(0), &WorldMat);
m_pD3dDevice->GetTransform(D3DTS_VIEW, &Viewmat);
m_pD3dDevice->GetTransform(D3DTS_PROJECTION, & rojmat);
D3DXVec3Project(&b, &a, &vv, &Projmat, &Viewmat, &WorldMat);//取得屏幕坐标
pSprite->Begin(D3DXSPRITE_ALPHABLEND|D3DXSPRITE_SORT_TEXTURE);//sprite 开始
D3DXMATRIX matrix;
D3DXMatrixIdentity(&matrix);
D3DXMatrixTranslation(&matrix, 0.0f, 0.0f, b.z); //这个深度在一个人物的时候是正确的,两个就不行了
pSprite->SetTransform(&matrix);
m_pNameFont->DrawText(pSprite,_T("clientA"),-1,&tc,DT_TOP|DT_LEFT|DT_VCENTER,0xffffffff);
pSprite->End();//sprite结束
刚开始一个人物的时候,头上的文字是正常的,这时进来第二个人物,文字就时有时无,尤其是靠近地面的时候,文字被地面掩盖,我发现我的人物的文字深度依然保持在原点的位置,假如原点的位置有个大石头,我当前的人物跑很远了,仍然会被这个大石头挡住,这是在一个人物的时候不会发生的
每个人物,我都是单独创建的sprite,也就是说,上面的代码是一个函数,进来一个人物我就创建一个sprite,然后执行各自函数(也就是上面的代码)难道sprite之间也会互相影响么?请问是哪里的问题呢???
|
|