void CCamera::Init(const POINT3D &pos,const Vector4D& dir,float fov,float nearz, float farz,float viewport_width,float viewport_height ) { m_pos = pos; m_dir = dir; m_fov = fov; m_nearclipz = nearz; m_farclipz = farz; m_viewport_width = viewport_width; m_viewport_height = viewport_height; m_aspectratio = m_viewport_width/m_viewport_height; m_imageplannar_width = 2; m_imageplannar_height = 2/m_aspectratio; m_imageplannar_viewdist = 1/tan(DEG2RAD *(m_fov/2)); m_w2camMatrix.Identity(); m_c2prjMatrix.Identity(); m_p2ScrMatrix.Identity(); SetWorldToCameraMatrix(); SetCameraToProjectionMatrix(); SetProjectionToScreenMatrix(); }
ProjectionFrustum::ProjectionFrustum(float fov, float z_near, float z_far) : camera_clip_matrix(1.0) , world_camera_matrix(1.0) , fov(fov) , z_near(z_near) , z_far(z_far) { SetupCameraClip(); SetCameraToClipMatrix(camera_clip_matrix); SetWorldToCameraMatrix(world_camera_matrix); }