libgoatvr

view src/vr.h @ 32:7eea82cea9d2

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