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 }
|