0

DirectX で World Position から Screen Position を取得したい。

ボールのワールド ポジションを取得できます。しかし、それを画面位置に変換する方法がわかりません。

4

1 に答える 1

2

ビュー/目の変換 V (「カメラ」を「配置」するもの) と射影変換 P があります。

クリップ空間座標は

clip_position = P * V * world_space_position

クリップ スペースから、クリップ スペース座標を 4 番目のクリップ スペース座標 w で割ることにより、NDC スペースに到達します。

ndc_x = clip_x / clip_w
ndc_y = clip_y / clip_w
ndc_z = clip_z / clip_w
ndc_w = clip_w / clip_w = 1

ビューポートの XY 座標は、[-1,1] の範囲をビューポートの寸法にマッピングすることによって取得されます。OpenGL と DirectX の違いは、OpenGL では深度範囲 [-1,1] が [0, DEPTH_BUFFER_RESOLUTION] にマッピングされるのに対し、DirectX では深度範囲 [0, 1] が深度バッファー値の範囲にマッピングされることです。

于 2011-11-20T11:51:05.277 に答える