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