diff options
Diffstat (limited to 'Samples/OculusWorldDemo')
-rw-r--r-- | Samples/OculusWorldDemo/OculusWorldDemo.cpp | 20 | ||||
-rw-r--r-- | Samples/OculusWorldDemo/OculusWorldDemo.h | 3 | ||||
-rw-r--r-- | Samples/OculusWorldDemo/OculusWorldDemo_Scene.cpp | 5 |
3 files changed, 21 insertions, 7 deletions
diff --git a/Samples/OculusWorldDemo/OculusWorldDemo.cpp b/Samples/OculusWorldDemo/OculusWorldDemo.cpp index febc153..7dfde26 100644 --- a/Samples/OculusWorldDemo/OculusWorldDemo.cpp +++ b/Samples/OculusWorldDemo/OculusWorldDemo.cpp @@ -71,6 +71,7 @@ OculusWorldDemoApp::OculusWorldDemoApp() PositionTrackingEnabled(true), PixelLuminanceOverdrive(true), MirrorToWindow(true), + SupportsSrgb(true), // Scene state SceneMode(Scene_World), @@ -246,6 +247,10 @@ bool OculusWorldDemoApp::SetupWindowAndRendering(int argc, const char** argv) RenderParams.Display = DisplayId(Hmd->DisplayDeviceName, Hmd->DisplayId); RenderParams.Multisample = 1; RenderParams.Resolution = Hmd->Resolution; + + if (OVR_strcmp(graphics, "GL") == 0 && !(Hmd->HmdCaps & ovrHmdCap_ExtendDesktop)) + SupportsSrgb = false; + //RenderParams.Fullscreen = true; pRender = pPlatform->SetupGraphics(OVR_DEFAULT_RENDER_DEVICE_SET, graphics, RenderParams); @@ -496,8 +501,9 @@ void OculusWorldDemoApp::CalculateHmdValues() ovrRenderAPIConfig config = pRender->Get_ovrRenderAPIConfig(); unsigned distortionCaps = ovrDistortionCap_Chromatic | - ovrDistortionCap_Vignette | - ovrDistortionCap_SRGB; + ovrDistortionCap_Vignette; + if (SupportsSrgb) + distortionCaps |= ovrDistortionCap_SRGB; if(PixelLuminanceOverdrive) distortionCaps |= ovrDistortionCap_Overdrive; if (TimewarpEnabled) @@ -586,9 +592,11 @@ Sizei OculusWorldDemoApp::EnsureRendertargetAtLeastThisBig(int rtNum, Sizei requ // Does that require actual reallocation? if (Sizei(rt.Tex.Header.TextureSize) != newRTSize) { - rt.pTex = *pRender->CreateTexture(Texture_RGBA | Texture_RenderTarget | - (MultisampleEnabled ? 4 : 1) | Texture_SRGB , - newRTSize.w, newRTSize.h, NULL); + int format = Texture_RGBA | Texture_RenderTarget | (MultisampleEnabled ? 4 : 1); + if (SupportsSrgb) + format |= Texture_SRGB; + + rt.pTex = *pRender->CreateTexture(format, newRTSize.w, newRTSize.h, NULL); rt.pTex->SetSampleMode(Sample_ClampBorder | Sample_Linear); @@ -1205,7 +1213,7 @@ void OculusWorldDemoApp::RenderTextInfoHud(float textHeight) OVR_sprintf(gpustat, sizeof(gpustat), " GPU Tex: %u MB", texMemInMB); OVR_strcat(buf, sizeof(buf), gpustat); } - + DrawTextBox(pRender, 0.0f, 0.0f, textHeight, buf, DrawText_Center); } break; diff --git a/Samples/OculusWorldDemo/OculusWorldDemo.h b/Samples/OculusWorldDemo/OculusWorldDemo.h index 38843df..86f68b0 100644 --- a/Samples/OculusWorldDemo/OculusWorldDemo.h +++ b/Samples/OculusWorldDemo/OculusWorldDemo.h @@ -48,6 +48,7 @@ using namespace OVR::Util::Render; #define WORLDDEMO_ASSET_PATH2 "../../../Assets/Tuscany/" // This path allows the shortcut to work. #define WORLDDEMO_ASSET_PATH3 "Samples/OculusWorldDemo/Assets/Tuscany/" +#define WORLDDEMO_ASSET_PATH4 "../Assets/Tuscany/" using namespace OVR; using namespace OVR::OvrPlatform; @@ -172,6 +173,8 @@ protected: int ScreenNumber; int FirstScreenInCycle; + bool SupportsSrgb; + struct RenderTarget { Ptr<Texture> pTex; diff --git a/Samples/OculusWorldDemo/OculusWorldDemo_Scene.cpp b/Samples/OculusWorldDemo/OculusWorldDemo_Scene.cpp index 0a81469..48c97ba 100644 --- a/Samples/OculusWorldDemo/OculusWorldDemo_Scene.cpp +++ b/Samples/OculusWorldDemo/OculusWorldDemo_Scene.cpp @@ -39,13 +39,16 @@ void OculusWorldDemoApp::InitMainFilePath() { String prefixPath1(pPlatform->GetContentDirectory() + "/" + WORLDDEMO_ASSET_PATH1), prefixPath2(WORLDDEMO_ASSET_PATH2), - prefixPath3(WORLDDEMO_ASSET_PATH3); + prefixPath3(WORLDDEMO_ASSET_PATH3), + prefixPath4(WORLDDEMO_ASSET_PATH4); if (SysFile(prefixPath1 + MainFilePath).IsValid()) MainFilePath = prefixPath1 + MainFilePath; else if (SysFile(prefixPath2 + MainFilePath).IsValid()) MainFilePath = prefixPath2 + MainFilePath; else if (SysFile(prefixPath3 + MainFilePath).IsValid()) MainFilePath = prefixPath3 + MainFilePath; + else if (SysFile(prefixPath4 + MainFilePath).IsValid()) + MainFilePath = prefixPath4 + MainFilePath; } } |