nuclear@0: #ifndef VR_IMPL_H_ nuclear@0: #define VR_IMPL_H_ nuclear@0: nuclear@0: #include "vr.h" nuclear@0: #include "opt.h" nuclear@0: nuclear@0: struct vr_module { nuclear@0: char *name; nuclear@0: nuclear@0: int (*init)(void); nuclear@0: void (*cleanup)(void); nuclear@0: nuclear@0: int (*set_option)(const char *opt, enum opt_type type, void *valp); nuclear@0: int (*get_option)(const char *opt, enum opt_type type, void *valp); nuclear@0: nuclear@0: void (*translation)(int eye, float *vec); nuclear@0: void (*rotation)(int eye, float *quat); nuclear@0: nuclear@0: void (*view_matrix)(int eye, float *mat); nuclear@0: void (*proj_matrix)(int eye, float znear, float zfar, float *mat); nuclear@0: nuclear@0: void (*begin)(int eye); nuclear@0: void (*end)(void); nuclear@0: int (*present)(void); nuclear@0: nuclear@0: void (*set_eye_texture)(int eye, unsigned int tex, float umin, float vmin, float umax, float vmax); nuclear@0: nuclear@0: void (*recenter)(void); nuclear@0: }; nuclear@0: nuclear@0: void vr_init_modules(void); nuclear@0: nuclear@0: void vr_clear_modules(void); nuclear@0: void vr_register_module(struct vr_module *mod); nuclear@0: nuclear@0: int vr_get_num_modules(void); nuclear@0: struct vr_module *vr_get_module(int idx); nuclear@0: nuclear@0: void vr_activate_module(int idx); nuclear@0: nuclear@0: int vr_get_num_active_modules(void); nuclear@0: struct vr_module *vr_get_active_module(int idx); nuclear@0: nuclear@0: #endif /* VR_IMPL_H_ */