From 511598f60565ab89a375cab336c5121737d0dea7 Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 8 Jan 2018 21:16:14 -0800 Subject: [PATCH] Fix lovr.headset.getDisplayDimensions when called in lovr.load; --- src/headset/openvr.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/headset/openvr.c b/src/headset/openvr.c index 3081c848..04139823 100644 --- a/src/headset/openvr.c +++ b/src/headset/openvr.c @@ -142,6 +142,14 @@ static TrackedDevicePose_t getPose(unsigned int deviceIndex) { return poses[deviceIndex]; } +static void initializeCanvas() { + glBindFramebuffer(GL_FRAMEBUFFER, 0); + int msaa = 0; + glGetIntegerv(GL_SAMPLES, &msaa); + state.system->GetRecommendedRenderTargetSize(&state.renderWidth, &state.renderHeight); + state.canvas = lovrCanvasCreate(state.renderWidth, state.renderHeight, FORMAT_RGB, CANVAS_3D, msaa, true, true); +} + static void openvrInit() { state.isInitialized = false; state.isRendering = false; @@ -320,6 +328,7 @@ static void openvrGetDisplayDimensions(int* width, int* height) { if (!state.isInitialized) { *width = *height = 0; } else { + initializeCanvas(); *width = state.renderWidth; *height = state.renderHeight; } @@ -716,11 +725,7 @@ static void openvrRenderTo(headsetRenderCallback callback, void* userdata) { lovrGraphicsPushView(); if (!state.canvas) { - glBindFramebuffer(GL_FRAMEBUFFER, 0); - int msaa = 0; - glGetIntegerv(GL_SAMPLES, &msaa); - state.system->GetRecommendedRenderTargetSize(&state.renderWidth, &state.renderHeight); - state.canvas = lovrCanvasCreate(state.renderWidth, state.renderHeight, FORMAT_RGB, CANVAS_3D, msaa, true, true); + initializeCanvas(); } float head[16], transform[16], projection[16];