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