EYE_MONO,/* my son says we should call this EYE_CYCLOPS */
EYE_LEFT,
EYE_RIGHT
};
virtualStringNameget_name()const;
boolis_primary();
voidset_is_primary(boolp_is_primary);
virtualboolis_installed()=0;/* returns true if the middle ware related to this interface has been installed */
virtualboolhmd_is_present()=0;/* returns true if our HMD is connected */
virtualboolsupports_hmd()=0;/* returns true is this interface handles output to an HMD or only handles positioning */
virtualboolis_initialized()=0;/* returns true if we've initialized this interface */
virtualboolinitialize()=0;/* initialize this interface, if this has an HMD it becomes the primary interface */
virtualvoiduninitialize()=0;/* deinitialize this interface */
virtualSize2get_recommended_render_targetsize()=0;/* returns the recommended render target size per eye for this device */
virtualboolis_stereo()=0;/* returns true if this interface requires stereo rendering (for VR HMDs) or mono rendering (for mobile AR) */
virtualTransformget_transform_for_eye(ARVRInterface::Eyesp_eye,constTransform&p_cam_transform)=0;/* get each eyes camera transform, also implement EYE_MONO */
virtualCameraMatrixget_projection_for_eye(ARVRInterface::Eyesp_eye,real_tp_aspect,real_tp_z_near,real_tp_z_far)=0;/* get each eyes projection matrix */
virtualvoidcommit_for_eye(ARVRInterface::Eyesp_eye,RIDp_render_target,constRect2&p_screen_rect)=0;/* output the left or right eye */