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
本文介绍了如何在DirectX中将3D世界坐标转换为屏幕坐标,以便进行绘制操作,如坐标轴文字显示。通过依次应用World、View、Projection变换矩阵,并进行归一化和屏幕坐标映射实现转换。
1万+

被折叠的 条评论
为什么被折叠?



