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@18
|
22 #define VR_NULL_STEREO "null-stereo" /* bool, default 0 */
|
nuclear@0
|
23
|
nuclear@0
|
24 enum {
|
nuclear@0
|
25 VR_EYE_LEFT,
|
nuclear@0
|
26 VR_EYE_RIGHT
|
nuclear@0
|
27 };
|
nuclear@0
|
28
|
nuclear@0
|
29 #ifdef __cplusplus
|
nuclear@0
|
30 extern "C" {
|
nuclear@0
|
31 #endif
|
nuclear@0
|
32
|
nuclear@0
|
33 int vr_init(void);
|
nuclear@0
|
34 void vr_shutdown(void);
|
nuclear@0
|
35
|
nuclear@0
|
36 int vr_module_count(void);
|
nuclear@0
|
37 const char *vr_module_name(int idx);
|
nuclear@0
|
38
|
nuclear@0
|
39 int vr_use_module(int idx);
|
nuclear@0
|
40 int vr_use_module_named(const char *name);
|
nuclear@0
|
41
|
nuclear@11
|
42 void vr_seti(const char *optname, int val);
|
nuclear@11
|
43 void vr_setf(const char *optname, float val);
|
nuclear@11
|
44 int vr_geti(const char *optname);
|
nuclear@11
|
45 float vr_getf(const char *optname);
|
nuclear@19
|
46 float *vr_getfv(const char *optname, float *res);
|
nuclear@12
|
47 /* variants of the get functions, with an additional "default value"
|
nuclear@12
|
48 * argument, which is returned if the requested option is missing
|
nuclear@12
|
49 */
|
nuclear@12
|
50 int vr_geti_def(const char *optname, int def_val);
|
nuclear@12
|
51 float vr_getf_def(const char *optname, float def_val);
|
nuclear@0
|
52
|
nuclear@0
|
53 int vr_view_translation(int eye, float *vec);
|
nuclear@0
|
54 int vr_view_rotation(int eye, float *quat);
|
nuclear@0
|
55
|
nuclear@0
|
56 /* returns non-zero if the active vr module provides this kind of matrix
|
nuclear@0
|
57 * information, otherwise it returns zero, and sets mat to identity
|
nuclear@0
|
58 */
|
nuclear@0
|
59 int vr_view_matrix(int eye, float *mat);
|
nuclear@0
|
60 int vr_proj_matrix(int eye, float znear, float zfar, float *mat);
|
nuclear@0
|
61
|
nuclear@0
|
62 void vr_begin(int eye);
|
nuclear@0
|
63 void vr_end(void);
|
nuclear@0
|
64 int vr_swap_buffers(void);
|
nuclear@0
|
65
|
nuclear@0
|
66 /* set the output texture or separate textures for each eye */
|
nuclear@0
|
67 void vr_output_texture(unsigned int tex, float umin, float vmin, float umax, float vmax);
|
nuclear@0
|
68 void vr_output_texture_eye(int eye, unsigned int tex, float umin, float vmin, float umax, float vmax);
|
nuclear@0
|
69
|
nuclear@0
|
70 void vr_recenter(void);
|
nuclear@0
|
71
|
nuclear@0
|
72 #ifdef __cplusplus
|
nuclear@0
|
73 }
|
nuclear@0
|
74 #endif
|
nuclear@0
|
75
|
nuclear@0
|
76 #endif /* VR_H_ */
|