nuclear@10: #include "vr_impl.h" nuclear@10: nuclear@10: #ifdef USE_OPENHMD nuclear@10: #include nuclear@10: #include nuclear@10: #include nuclear@10: #include "opt.h" nuclear@10: nuclear@10: /* a noble spirit embiggens the framebuffer to avoid aliasing in the middle */ nuclear@10: #define EMBIGGEN 1.5 nuclear@10: nuclear@10: static ohmd_context *ctx; nuclear@10: static ohmd_device *dev; nuclear@10: static void *optdb; nuclear@10: static int new_frame = 1; nuclear@10: nuclear@10: static int disp_width, disp_height; nuclear@10: static float ipd; nuclear@10: nuclear@10: static struct { nuclear@10: unsigned int id; nuclear@10: float umin, umax; nuclear@10: float vmin, vmax; nuclear@10: } eye_tex[2]; nuclear@10: nuclear@10: nuclear@10: static int init(void) nuclear@10: { nuclear@10: int i, num_hmds; nuclear@10: nuclear@10: if(!(ctx = ohmd_ctx_create())) { nuclear@10: fprintf(stderr, "failed to create OpenHMD context\n"); nuclear@10: ohmd_ctx_destroy(ctx); nuclear@10: return -1; nuclear@10: } nuclear@10: if(!(num_hmds = ohmd_ctx_probe(ctx))) { nuclear@10: fprintf(stderr, "no HMDs detected\n"); nuclear@10: return -1; nuclear@10: } nuclear@10: nuclear@10: for(i=0; i