У вас есть преобразование вида / глаза V (то, которое «помещает» вашу «камеру») и преобразование проекции P.
Координаты пространства клипа достигаются
clip_position = P * V * world_space_position
Из пространства клипа вы достигнете пространства NDC, разделив координаты пространства клипа на 4-ю координату пространства клипа w, то есть
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] отображается в диапазон значений буфера глубины.