在一个网游中需要在角色的头顶显示角色的姓名,当角色被一个房子挡住的时候,他的姓名也应该看不到,或者是挡住一半,这就需要使用Z值测试。如果你使用了ID3DXFont,会发现它并没有一个带z值参数的接口函数,要使得ID3DXFont支持z值,需要多做几个步骤,我感觉这就是MS的风格。:(
MS声称ID3DXFont是一个完全2D的接口,所以如果你想接入z值测试,那么必须通过ID3DXSprite!不过用法倒也简单:
1、创建一个ID3DXFont对象和一个ID3DXSprite对象;
2、调用ID3DXSprite对象的Begin():
m_pD3DSprite->Begin(D3DXSPRITE_ALPHABLEND);
3、将ID3DXSprite对象的Transform矩阵:
D3DXMATRIX matrix;
D3DXMatrixIdentity(&matrix);
D3DXMatrixTranslation(&matrix, 0.0f, 0.0f, z);
m_pD3DSprite->SetTransform(&matrix);
4、调用一下ID3DXSprite的End()才能真正的画出文字。