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