D3D世界座標變換到屏幕座標

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章