nuclear@0: #ifndef VR_H_ nuclear@0: #define VR_H_ nuclear@0: nuclear@8: /* unit: pixels */ nuclear@11: #define VR_DISPLAY_WIDTH "display-xres" nuclear@11: #define VR_DISPLAY_HEIGHT "display-yres" nuclear@11: #define VR_LEYE_XRES "left-eye-xres" nuclear@11: #define VR_LEYE_YRES "left-eye-yres" nuclear@11: #define VR_REYE_XRES "right-eye-xres" nuclear@11: #define VR_REYE_YRES "right-eye-yres" nuclear@11: #define VR_WIN_XOFFS "win-xoffset" nuclear@11: #define VR_WIN_YOFFS "win-yoffset" nuclear@8: /* unit: meters */ nuclear@11: #define VR_EYE_HEIGHT "eye-height" nuclear@11: #define VR_IPD "ipd" nuclear@0: nuclear@0: enum { nuclear@0: VR_EYE_LEFT, nuclear@0: VR_EYE_RIGHT nuclear@0: }; nuclear@0: nuclear@0: #ifdef __cplusplus nuclear@0: extern "C" { nuclear@0: #endif nuclear@0: nuclear@0: int vr_init(void); nuclear@0: void vr_shutdown(void); nuclear@0: nuclear@0: int vr_module_count(void); nuclear@0: const char *vr_module_name(int idx); nuclear@0: nuclear@0: int vr_use_module(int idx); nuclear@0: int vr_use_module_named(const char *name); nuclear@0: nuclear@11: void vr_seti(const char *optname, int val); nuclear@11: void vr_setf(const char *optname, float val); nuclear@11: int vr_geti(const char *optname); nuclear@11: float vr_getf(const char *optname); nuclear@0: nuclear@0: int vr_view_translation(int eye, float *vec); nuclear@0: int vr_view_rotation(int eye, float *quat); nuclear@0: nuclear@0: /* returns non-zero if the active vr module provides this kind of matrix nuclear@0: * information, otherwise it returns zero, and sets mat to identity nuclear@0: */ nuclear@0: int vr_view_matrix(int eye, float *mat); nuclear@0: int vr_proj_matrix(int eye, float znear, float zfar, float *mat); nuclear@0: nuclear@0: void vr_begin(int eye); nuclear@0: void vr_end(void); nuclear@0: int vr_swap_buffers(void); nuclear@0: nuclear@0: /* set the output texture or separate textures for each eye */ nuclear@0: void vr_output_texture(unsigned int tex, float umin, float vmin, float umax, float vmax); nuclear@0: void vr_output_texture_eye(int eye, unsigned int tex, float umin, float vmin, float umax, float vmax); nuclear@0: nuclear@0: void vr_recenter(void); nuclear@0: nuclear@0: #ifdef __cplusplus nuclear@0: } nuclear@0: #endif nuclear@0: nuclear@0: #endif /* VR_H_ */