在DirectX中將屏幕坐標轉成空間坐標

在DirectX中將屏幕坐標轉成空間坐標,第1張

在DirectX中將屏幕坐標轉成空間坐標,第2張

123456789101112131415點p =光標。位置;
p =這個。PointToClient(p);

曏量3 v1 =新曏量3(p.X,p.Y,0f);
v1。取消項目(這個。GraphicDevice.Viewport。圖形設備.轉換.投影,

這個。GraphicDevice.Transform.View,this。graphic device . transform . world);

曏量3 v2 =新曏量3(p.X,p.Y,1f);
v2。取消項目(這個。GraphicDevice.Viewport。圖形設備.轉換.投影,

這個。GraphicDevice.Transform.View,this。graphic device . transform . world);

float fParam = (v1。Y - 0f) / (v1。Y - v2。y);

vector 3 v3 = new vector 3();
v3。X = v1。X - (v1。X - v2。x)* fParam;
v3。y = 0;
v3。Z = v1。Z - (v1。Z - v2。z)* fParam;

先算出z = 0和z = 1兩種情況下的空點,即切割的最近距離和最遠距離。然後根據Y=f3DY(我這裡已經直接把f3DY設置爲0了,見第10行代碼),我們可以截一次,按比例得到x和z。

V3是計算出的坐標。

位律師廻複

生活常識_百科知識_各類知識大全»在DirectX中將屏幕坐標轉成空間坐標

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情