Render to window if headset unavailable;

This commit is contained in:
bjorn 2016-10-24 13:43:07 -07:00
parent b3cd1a103e
commit 2267396e5a
3 changed files with 12 additions and 9 deletions

View File

@ -8,6 +8,10 @@ void lovrHeadsetInit() {
}
char lovrHeadsetIsPresent() {
if (!headset) {
return 0;
}
return headset->interface->isPresent(headset);
}

View File

@ -63,16 +63,15 @@ Headset* viveInit() {
this->interface = &interface;
if (!VR_IsHmdPresent()) {
error("Warning: HMD not found");
return NULL;
} else if (!VR_IsRuntimeInstalled()) {
error("Warning: SteamVR not found");
return NULL;
}
EVRInitError vrError;
VR_InitInternal(&vrError, EVRApplicationType_VRApplication_Scene);
if (vrError != EVRInitError_VRInitError_None) {
error("Problem initializing OpenVR");
return NULL;
}
@ -81,21 +80,18 @@ Headset* viveInit() {
sprintf(fnTableName, "FnTable:%s", IVRSystem_Version);
state->vrSystem = (struct VR_IVRSystem_FnTable*) VR_GetGenericInterface(fnTableName, &vrError);
if (vrError != EVRInitError_VRInitError_None || state->vrSystem == NULL) {
error("Problem initializing VRSystem");
return NULL;
}
sprintf(fnTableName, "FnTable:%s", IVRCompositor_Version);
state->vrCompositor = (struct VR_IVRCompositor_FnTable*) VR_GetGenericInterface(fnTableName, &vrError);
if (vrError != EVRInitError_VRInitError_None || state->vrCompositor == NULL) {
error("Problem initializing VRCompositor");
return NULL;
}
sprintf(fnTableName, "FnTable:%s", IVRChaperone_Version);
state->vrChaperone = (struct VR_IVRChaperone_FnTable*) VR_GetGenericInterface(fnTableName, &vrError);
if (vrError != EVRInitError_VRInitError_None || state->vrChaperone == NULL) {
error("Problem initializing VRChaperone");
return NULL;
}
@ -138,7 +134,7 @@ Headset* viveInit() {
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, state->resolveTexture, 0);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
error("framebuffer not complete");
return NULL;
}
glBindFramebuffer(GL_FRAMEBUFFER, 0);

View File

@ -51,8 +51,11 @@ void lovrInit(lua_State* L) {
" if lovr.update then lovr.update(dt) end "
" lovr.graphics.clear() "
" if lovr.draw then "
" if lovr.headset then lovr.headset.renderTo(lovr.draw) "
" else lovr.draw() end "
" if lovr.headset and lovr.headset.isPresent() then "
" lovr.headset.renderTo(lovr.draw) "
" else "
" lovr.draw() "
" end "
" end "
" lovr.graphics.present() "
" lovr.timer.sleep(.001) "