.版本 2
.子程序 WorldToScreen算法, 坐标2D
.参数 对象坐标, D3DXVECTOR3
.局部变量 View矩阵, 小数型, , "4,4"
.局部变量 Projection矩阵, 小数型, , "4,4"
.局部变量 游戏矩阵, 小数型, , "4,4"
.局部变量 屏幕坐标, 坐标3D
.局部变量 计算坐标, 坐标3D
.局部变量 返回坐标, 坐标2D
.局部变量 TMP, 整数型
.局部变量 屏幕大小, 坐标2D
读矩阵 (Get_pView (), View矩阵)
读矩阵 (Get_pProjection (), Projection矩阵)
矩阵相乘 (View矩阵, Projection矩阵, 游戏矩阵)
TMP = 读整数型 (#矩阵基址)
屏幕大小.x = 读整数型 (TMP + 24)
屏幕大小.y = 读整数型 (TMP + 28)
屏幕坐标.x = 对象坐标.x × 游戏矩阵 [1] [1] + 对象坐标.y × 游戏矩阵 [2] [1] + 对象坐标.z × 游戏矩阵 [3] [1] + 游戏矩阵 [4] [1]
屏幕坐标.y = 对象坐标.x × 游戏矩阵 [1] [2] + 对象坐标.y × 游戏矩阵 [2] [2] + 对象坐标.z × 游戏矩阵 [3] [2] + 游戏矩阵 [4] [2]
屏幕坐标.z = 对象坐标.x × 游戏矩阵 [1] [3] + 对象坐标.y × 游戏矩阵 [2] [3] + 对象坐标.z × 游戏矩阵 [3] [3] + 游戏矩阵 [4] [3]
屏幕坐标.w = 对象坐标.x × 游戏矩阵 [1] [4] + 对象坐标.y × 游戏矩阵 [2] [4] + 对象坐标.z × 游戏矩阵 [3] [4] + 游戏矩阵 [4] [4]
.如果真 (屏幕坐标.z < 0.01)如果真 ()
返回 (返回坐标)
.如果真结束
计算坐标.x = 屏幕坐标.x ÷ 屏幕坐标.w
计算坐标.y = 屏幕坐标.y ÷ 屏幕坐标.w
计算坐标.z = 屏幕坐标.z ÷ 屏幕坐标.w
返回坐标.x = 屏幕大小.x ÷ 2 × 计算坐标.x + 计算坐标.x + 屏幕大小.x ÷ 2
返回坐标.y = -(屏幕大小.y ÷ 2 × 计算坐标.y) + 计算坐标.y + 屏幕大小.y ÷ 2
返回 (返回坐标)
|