nuclear@1: #ifndef VR_H_ nuclear@1: #define VR_H_ nuclear@1: nuclear@1: /* VR mode init options */ nuclear@1: enum vr_init_mode { nuclear@1: VR_INIT_NONE, nuclear@1: VR_INIT_OCULUS, nuclear@1: VR_INIT_STEREO nuclear@1: }; nuclear@1: nuclear@1: /* possible eye values */ nuclear@1: enum { nuclear@1: VR_EYE_CENTER, nuclear@1: VR_EYE_LEFT, nuclear@1: VR_EYE_RIGHT nuclear@1: }; nuclear@1: nuclear@1: #ifdef __cplusplus nuclear@1: extern "C" { nuclear@1: #endif nuclear@1: nuclear@1: int vr_init(enum vr_init_mode mode); nuclear@1: void vr_shutdown(void); nuclear@1: nuclear@12: int vr_get_width(void); nuclear@12: int vr_get_height(void); nuclear@12: nuclear@1: float vr_get_fov(void); nuclear@1: float vr_get_aspect(void); nuclear@1: nuclear@1: void vr_set_eyedist(float ipd); nuclear@1: float vr_get_eyedist(void); nuclear@1: nuclear@1: /* expects an array of 4 barrel distortion coefficients: nuclear@1: * polar scale: k_0 + k_1 r^2 + k_2 r^4 + k_3 r^6 nuclear@1: */ nuclear@1: void vr_set_distort(const float *coef); nuclear@1: void vr_get_distort(float *coef); nuclear@1: nuclear@3: void vr_set_prediction_sec(float dt); nuclear@3: float vr_get_prediction_sec(void); nuclear@3: nuclear@1: void vr_get_view_matrix(float *res, int eye); nuclear@1: void vr_get_proj_matrix(float *res, int eye); nuclear@1: nuclear@1: /* expects an array of at least 3 floats (x, y, z, offset). */ nuclear@1: void vr_get_translation(float *offs); nuclear@1: /* expects an array of at least 4 floats (x, y, z, w, quaternion). */ nuclear@1: void vr_get_rotation(float *quat); nuclear@1: /* expects an array of at least 3 floats (pitch, yaw, roll, angles). */ nuclear@1: void vr_get_rotation_euler(float *euler); nuclear@1: nuclear@1: /* OpenGL stuff */ nuclear@1: void vr_draw_eye(unsigned int tex, int eye); nuclear@1: nuclear@1: #ifdef __cplusplus nuclear@1: } nuclear@1: #endif nuclear@1: nuclear@1: #endif /* VR_H_ */