D3D中世界坐标变换到屏幕坐标,可用于绘制坐标轴文字.
Code:
D3D世界坐标转屏幕坐标
Private Function Vector2Point(x As Single, y As Single, z As Single) As Point
'是有顺序的,先世界、在视图、在投影
Dim VectorOP As New Vector4(x, y, z, 1.0F)
VectorOP = Vector4.Transform(VectorOP, device.Transform.World)
VectorOP = Vector4.Transform(VectorOP, device.Transform.View)
VectorOP = Vector4.Transform(VectorOP, device.Transform.Projection)
Dim ScreenMatrix As Matrix = Matrix.Zero
ScreenMatrix.M11 = ScreenMatrix.M41 - CSng(Me.Width) / 2
ScreenMatrix.M22 = -CSng(Me.Height) / 2
ScreenMatrix.M42 = CSng(Me.Height) / 2
VectorOP = Vector4.Multiply(VectorOP, 1.0F / VectorOP.W)
VectorOP = Vector4.Transform(VectorOP, ScreenMatrix)
Dim p As New Point(CInt(Me.Width / 2 - VectorOP.X), CInt(VectorOP.Y))
Return p
End Function