游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1205|回复: 0

屏幕坐标Z深度问题

[复制链接]

75

主题

102

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2009-4-22 15:48:00 | 显示全部楼层 |阅读模式
我要做的是人物头上的文字

已经求出单个人物头上的文字的屏幕坐标,而且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, &amprojmat);

    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之间也会互相影响么?请问是哪里的问题呢???






您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 14:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表