int OculusWorldDemoApp::OnStartup(int argc, const char** argv) { // *** Oculus HMD & Sensor Initialization // Create DeviceManager and first available HMDDevice from it. // Sensor object is created from the HMD, to ensure that it is on the // correct device. pManager = *DeviceManager::Create(); pHMD = *pManager->EnumerateDevices<HMDDevice>().CreateDevice(); if (pHMD) { pSensor = *pHMD->GetSensor(); // This will initialize HMDInfo with information about configured IPD, // screen size and other variables needed for correct projection. // We pass HMD DisplayDeviceName into the renderer to select the // correct monitor in full-screen mode. if(pHMD->GetDeviceInfo(&TheHMDInfo)) { //RenderParams.MonitorName = hmd.DisplayDeviceName; SConfig.SetHMDInfo(TheHMDInfo); } // Retrieve relevant profile settings. } else { // If we didn't detect an HMD, try to create the sensor directly. // This is useful for debugging sensor interaction; it is not needed in // a shipping app. pSensor = *pManager->EnumerateDevices<SensorDevice>().CreateDevice(); } // Make the user aware which devices are present. if(pHMD == NULL && pSensor == NULL) { SetAdjustMessage("---------------------------------\nNO HMD DETECTED\nNO SENSOR DETECTED\n---------------------------------"); } else if(pHMD == NULL) { SetAdjustMessage("----------------------------\nNO HMD DETECTED\n----------------------------"); } else { SetAdjustMessage("--------------------------------------------\n" "Press F9 for Full-Screen on Rift\n" "--------------------------------------------"); } // First message should be extra-long. SetAdjustMessageTimeout(10.0f); if(TheHMDInfo.HResolution > 0) { Width = TheHMDInfo.HResolution; Height = TheHMDInfo.VResolution; } if(!pPlatform->SetupWindow(Width, Height)) { return 1; } String Title = "Remote Eyes"; if(TheHMDInfo.ProductName[0]) { Title += " : "; Title += TheHMDInfo.ProductName; } pPlatform->SetWindowTitle(Title); // *** Initialize Rendering const char* graphics = "d3d11"; // Select renderer based on command line arguments. for(int i = 1; i < argc; i++) { if(!strcmp(argv[i], "-r") && i < argc - 1) { graphics = argv[i + 1]; } else if(!strcmp(argv[i], "-fs")) { RenderParams.Fullscreen = true; } } // Enable multi-sampling by default. RenderParams.Multisample = 4; pRender = pPlatform->SetupGraphics(OVR_DEFAULT_RENDER_DEVICE_SET, graphics, RenderParams); // *** Configure Stereo settings. SConfig.SetFullViewport(Viewport(0, 0, Width, Height)); SConfig.SetStereoMode(Stereo_LeftRight_Multipass); // Configure proper Distortion Fit. // For 7" screen, fit to touch left side of the view, leaving a bit of // invisible screen on the top (saves on rendering cost). // For smaller screens (5.5"), fit to the top. if (TheHMDInfo.HScreenSize > 0.0f) { if (TheHMDInfo.HScreenSize > 0.140f) // 7" SConfig.SetDistortionFitPointVP(-1.0f, 0.0f); else SConfig.SetDistortionFitPointVP(0.0f, 1.0f); } pRender->SetSceneRenderScale(SConfig.GetDistortionScale()); //pRender->SetSceneRenderScale(1.0f); SConfig.Set2DAreaFov(DegreeToRad(85.0f)); // Setup frame reader from shared memory pRead = new Read("../../caminfo.log"); return 0; }