oculus1

annotate src/vr.cc @ 1:e2f9e4603129

added LibOVR and started a simple vr wrapper.
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 14 Sep 2013 16:14:59 +0300
parents
children b069a5c27388
rev   line source
nuclear@1 1 #include <stdio.h>
nuclear@1 2 #include "vr.h"
nuclear@1 3 #include "vr_impl.h"
nuclear@1 4
nuclear@1 5 static bool init_ovr();
nuclear@1 6
nuclear@1 7 VRData vr_data;
nuclear@1 8
nuclear@1 9 extern "C" int vr_init(enum vr_init_mode mode)
nuclear@1 10 {
nuclear@1 11 if(!init_ovr()) {
nuclear@1 12 return -1;
nuclear@1 13 }
nuclear@1 14 return 0;
nuclear@1 15 }
nuclear@1 16
nuclear@1 17 extern "C" void vr_shutdown(void)
nuclear@1 18 {
nuclear@1 19 System::Destroy();
nuclear@1 20 }
nuclear@1 21
nuclear@1 22
nuclear@1 23
nuclear@1 24 static bool init_ovr()
nuclear@1 25 {
nuclear@1 26 // initialize Oculus SDK
nuclear@1 27 System::Init();
nuclear@1 28 if(!(vr_data.ovr_devman = DeviceManager::Create())) {
nuclear@1 29 fprintf(stderr, "failed to create OVR device manager\n");
nuclear@1 30 return false;
nuclear@1 31 }
nuclear@1 32
nuclear@1 33 // create the display device
nuclear@1 34 if(!(vr_data.ovr_hmd_dev = vr_data.ovr_devman->EnumerateDevices<HMDDevice>().CreateDevice())) {
nuclear@1 35 fprintf(stderr, "no oculus rift devices found\n");
nuclear@1 36 return false;
nuclear@1 37 }
nuclear@1 38
nuclear@1 39 HMDInfo info;
nuclear@1 40 if(vr_data.ovr_hmd_dev->GetDeviceInfo(&info)) {
nuclear@1 41 printf("oculus device info:\n");
nuclear@1 42 printf(" name: %s\n", info.DisplayDeviceName);
nuclear@1 43 printf(" ipd: %f\n", info.InterpupillaryDistance);
nuclear@1 44 printf(" distortion: %f %f %f %f\n", info.DistortionK[0],
nuclear@1 45 info.DistortionK[1], info.DistortionK[2], info.DistortionK[3]);
nuclear@1 46 }
nuclear@1 47
nuclear@1 48 // get the sensor device
nuclear@1 49 if(!(vr_data.ovr_sensor_dev = vr_data.ovr_hmd_dev->GetSensor())) {
nuclear@1 50 fprintf(stderr, "failed to get oculus sensor device\n");
nuclear@1 51 return false;
nuclear@1 52 }
nuclear@1 53
nuclear@1 54 SensorInfo sinfo;
nuclear@1 55 if(vr_data.ovr_sensor_dev->GetDeviceInfo(&sinfo)) {
nuclear@1 56 printf("oculus sensor device info:\n");
nuclear@1 57 printf(" name: %s\n", sinfo.ProductName);
nuclear@1 58 }
nuclear@1 59
nuclear@1 60 return true;
nuclear@1 61 }