libgoatvr

annotate src/vr.h @ 33:1102327fe85f

added red-cyan anaglyph fallback drawing
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 30 Oct 2015 06:34:00 +0200
parents 7eea82cea9d2
children
rev   line source
nuclear@0 1 #ifndef VR_H_
nuclear@0 2 #define VR_H_
nuclear@0 3
nuclear@8 4 /* unit: pixels */
nuclear@11 5 #define VR_DISPLAY_WIDTH "display-xres"
nuclear@11 6 #define VR_DISPLAY_HEIGHT "display-yres"
nuclear@11 7 #define VR_LEYE_XRES "left-eye-xres"
nuclear@11 8 #define VR_LEYE_YRES "left-eye-yres"
nuclear@11 9 #define VR_REYE_XRES "right-eye-xres"
nuclear@11 10 #define VR_REYE_YRES "right-eye-yres"
nuclear@16 11 #define VR_RENDER_XRES "render-xres" /* VR_LEYE_XRES + VR_REYE_XRES */
nuclear@16 12 #define VR_RENDER_YRES "render-yres" /* max(VR_LEYE_YRES, VR_REYE_YRES) */
nuclear@11 13 #define VR_WIN_XOFFS "win-xoffset"
nuclear@11 14 #define VR_WIN_YOFFS "win-yoffset"
nuclear@16 15 #define VR_RENDER_RES_SCALE "render-res-scale" /* default 1 */
nuclear@8 16 /* unit: meters */
nuclear@11 17 #define VR_EYE_HEIGHT "eye-height"
nuclear@11 18 #define VR_IPD "ipd"
nuclear@19 19 #define VR_LEYE_OFFSET "left-eye-offset" /* stereo offset from center of the head */
nuclear@19 20 #define VR_REYE_OFFSET "right-eye-offset" /* stereo offset from center of the head */
nuclear@17 21 /* misc options */
nuclear@32 22 #define VR_NULL_STEREO_SBS "null-stereo-sbs" /* bool, default 0: draw side-by-side */
nuclear@32 23 #define VR_NULL_STEREO_GL "null-stereo-gl" /* bool, default 0: use quad-buffer stereo */
nuclear@33 24 #define VR_NULL_STEREO_REDCYAN "null-stereo-redcyan" /* bool, default 0: draw red-cyan anaglyph stereo */
nuclear@0 25
nuclear@0 26 enum {
nuclear@0 27 VR_EYE_LEFT,
nuclear@0 28 VR_EYE_RIGHT
nuclear@0 29 };
nuclear@0 30
nuclear@0 31 #ifdef __cplusplus
nuclear@0 32 extern "C" {
nuclear@0 33 #endif
nuclear@0 34
nuclear@0 35 int vr_init(void);
nuclear@0 36 void vr_shutdown(void);
nuclear@0 37
nuclear@0 38 int vr_module_count(void);
nuclear@0 39 const char *vr_module_name(int idx);
nuclear@0 40
nuclear@0 41 int vr_use_module(int idx);
nuclear@0 42 int vr_use_module_named(const char *name);
nuclear@0 43
nuclear@11 44 void vr_seti(const char *optname, int val);
nuclear@11 45 void vr_setf(const char *optname, float val);
nuclear@11 46 int vr_geti(const char *optname);
nuclear@11 47 float vr_getf(const char *optname);
nuclear@19 48 float *vr_getfv(const char *optname, float *res);
nuclear@12 49 /* variants of the get functions, with an additional "default value"
nuclear@12 50 * argument, which is returned if the requested option is missing
nuclear@12 51 */
nuclear@12 52 int vr_geti_def(const char *optname, int def_val);
nuclear@12 53 float vr_getf_def(const char *optname, float def_val);
nuclear@0 54
nuclear@0 55 int vr_view_translation(int eye, float *vec);
nuclear@0 56 int vr_view_rotation(int eye, float *quat);
nuclear@0 57
nuclear@0 58 /* returns non-zero if the active vr module provides this kind of matrix
nuclear@0 59 * information, otherwise it returns zero, and sets mat to identity
nuclear@0 60 */
nuclear@0 61 int vr_view_matrix(int eye, float *mat);
nuclear@0 62 int vr_proj_matrix(int eye, float znear, float zfar, float *mat);
nuclear@0 63
nuclear@0 64 void vr_begin(int eye);
nuclear@0 65 void vr_end(void);
nuclear@0 66 int vr_swap_buffers(void);
nuclear@0 67
nuclear@0 68 /* set the output texture or separate textures for each eye */
nuclear@0 69 void vr_output_texture(unsigned int tex, float umin, float vmin, float umax, float vmax);
nuclear@0 70 void vr_output_texture_eye(int eye, unsigned int tex, float umin, float vmin, float umax, float vmax);
nuclear@0 71
nuclear@0 72 void vr_recenter(void);
nuclear@0 73
nuclear@0 74 #ifdef __cplusplus
nuclear@0 75 }
nuclear@0 76 #endif
nuclear@0 77
nuclear@0 78 #endif /* VR_H_ */