在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是计算出的坐标。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 在DirectX中将屏幕坐标转成空间坐标

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情