ちょっと聞いてくれー。
今3Dモデルを使った2Dシューティングを作ってるんだけど、
自機の行動範囲を制限するために、スクリーン座標を取得したいんだ。

float hsw = (float)vp.Width/2, hsh = (float)vp.Height/2;   // vpはビューポート
matScreen = _D3DXMATRIXA16(
       hsw,    0,   0,   0,
       0,   -hsh,   0,   0,
       0,     0,   1,   0,
       hsw,  hsh,   0,   1);

matWorld = matWorld * matView * matProj * matScreen;

という風にやってるんだけど、なんかぜんぜん違う値が出てしまう……。(X座標が50000とか)
スクリーン座標を取得するときの変換行列はこれで合ってる?