void OculusWorldDemoApp::Render(const StereoEyeParams& stereo) { if(stereo.Eye == StereoEye_Left) { GrabFrame(); } pRender->BeginScene(PostProcess); // *** 3D - Configures Viewport/Projection and Render pRender->ApplyStereoParams(stereo); pRender->Clear(); pRender->SetDepthMode(true, true); MainScene.Render(pRender, stereo.ViewAdjust * View); // *** 2D Text & Grid - Configure Orthographic rendering. // Render UI in 2D orthographic coordinate system that maps [-1,1] range // to a readable FOV area centered at your eye and properly adjusted. pRender->ApplyStereoParams2D(stereo); pRender->SetDepthMode(false, false); float unitPixel = SConfig.Get2DUnitPixel(); float textHeight= unitPixel * 22; // Display Loading screen-shot in frame 0. if (LoadingState != LoadingState_Finished) { LoadingScene.Render(pRender, Matrix4f()); String loadMessage = String("Loading...."); DrawTextBox(pRender, 0.0f, 0.0f, textHeight, loadMessage.ToCStr(), DrawText_HCenter); LoadingState = LoadingState_DoLoad; } cv::Size size = lastFrame->size(); char * imageData = (char *)malloc(size.width * size.height * 4); int pointer = 0; int c = 0; while(c < size.width * size.height * 3) { imageData[pointer++] = lastFrame->data[(c++)+2]; imageData[pointer++] = lastFrame->data[c++]; imageData[pointer++] = lastFrame->data[(c++)-2]; imageData[pointer++] = 0xFF; } Texture* tex = pRender->CreateTexture(Texture_RGBA, size.width, size.height, imageData, 1); ShaderFill* image = (ShaderFill*)pRender->CreateTextureFill(tex, false); // Left, top, right, bottom, image, alpha pRender->RenderImage(pictureSize, pictureSize, -pictureSize, -pictureSize, image, 255); delete image; delete tex; free(imageData); if(!AdjustMessage.IsEmpty() && AdjustMessageTimeout > pPlatform->GetAppTime()) { DrawTextBox(pRender,0.0f,0.4f, textHeight, AdjustMessage.ToCStr(), DrawText_HCenter); } switch(TextScreen) { case Text_Config: { char textBuff[2048]; OVR_sprintf(textBuff, sizeof(textBuff), "Fov\t300 %9.4f\n" "EyeDistance\t300 %9.4f\n" "DistortionK0\t300 %9.4f\n" "DistortionK1\t300 %9.4f\n" "DistortionK2\t300 %9.4f\n" "DistortionK3\t300 %9.4f\n" "TexScale\t300 %9.4f", SConfig.GetYFOVDegrees(), SConfig.GetIPD(), SConfig.GetDistortionK(0), SConfig.GetDistortionK(1), SConfig.GetDistortionK(2), SConfig.GetDistortionK(3), SConfig.GetDistortionScale()); DrawTextBox(pRender, 0.0f, 0.0f, textHeight, textBuff, DrawText_Center); } break; default: break; } pRender->FinishScene(); }