# HG changeset patch # User John Tsiombikas # Date 1446179640 -7200 # Node ID 1102327fe85f43abfef2460fc474167f6eeb53c9 # Parent 7eea82cea9d27e777b7e625e32a247a376193d59 added red-cyan anaglyph fallback drawing diff -r 7eea82cea9d2 -r 1102327fe85f src/vr.c --- a/src/vr.c Fri Oct 30 06:12:48 2015 +0200 +++ b/src/vr.c Fri Oct 30 06:34:00 2015 +0200 @@ -43,16 +43,12 @@ set_option_vec3f(defopt, VR_LEYE_OFFSET, -DEF_IPD * 0.5f, 0.0f, 0.0f); set_option_vec3f(defopt, VR_REYE_OFFSET, DEF_IPD * 0.5f, 0.0f, 0.0f); - if((env = getenv("VR_NULL_STEREO_SBS")) && atoi(env)) { - set_option_int(defopt, VR_NULL_STEREO_SBS, 1); - } else { - set_option_int(defopt, VR_NULL_STEREO_SBS, 0); - } - if((env = getenv("VR_NULL_STEREO_GL")) && atoi(env)) { - set_option_int(defopt, VR_NULL_STEREO_GL, 1); - } else { - set_option_int(defopt, VR_NULL_STEREO_GL, 0); - } + set_option_int(defopt, VR_NULL_STEREO_SBS, + (env = getenv("VR_NULL_STEREO_SBS")) && atoi(env) ? 1 : 0); + set_option_int(defopt, VR_NULL_STEREO_GL, + (env = getenv("VR_NULL_STEREO_GL")) && atoi(env) ? 1 : 0); + set_option_int(defopt, VR_NULL_STEREO_REDCYAN, + (env = getenv("VR_NULL_STEREO_REDCYAN")) && atoi(env) ? 1 : 0); } if(vrm) { @@ -371,6 +367,7 @@ { int i, show_sbs = vr_geti(VR_NULL_STEREO_SBS); int use_quadbuf = vr_geti(VR_NULL_STEREO_GL); + int use_redcyan = vr_geti(VR_NULL_STEREO_REDCYAN); glPushAttrib(GL_ENABLE_BIT | GL_TRANSFORM_BIT); @@ -379,6 +376,7 @@ glDisable(GL_ALPHA_TEST); glDisable(GL_STENCIL_TEST); glDisable(GL_FOG); + glDisable(GL_BLEND); glEnable(GL_TEXTURE_2D); @@ -389,10 +387,12 @@ glPushMatrix(); glLoadIdentity(); + glClear(GL_COLOR_BUFFER_BIT); + for(i=0; i<2; i++) { float x0, x1; - if(show_sbs && !use_quadbuf) { + if(show_sbs && !use_quadbuf && !use_redcyan) { x0 = i == 0 ? -1 : 0; x1 = i == 0 ? 0 : 1; } else { @@ -406,6 +406,17 @@ glDrawBuffer(GL_BACK_LEFT + i); } + if(use_redcyan) { + if(i == 0) { + glColorMask(1, 0, 0, 1); + } else { + glColorMask(0, 1, 1, 1); + + glEnable(GL_BLEND); + glBlendFunc(GL_ONE, GL_ONE); + } + } + glBegin(GL_QUADS); glTexCoord2f(rtarg[i].umin, rtarg[i].vmin); glVertex2f(x0, -1); @@ -417,12 +428,15 @@ glVertex2f(x0, 1); glEnd(); - if(!show_sbs && !use_quadbuf) break; + if(!show_sbs && !use_quadbuf && !use_redcyan) break; } if(use_quadbuf) { glDrawBuffer(GL_BACK); } + if(use_redcyan) { + glColorMask(1, 1, 1, 1); + } glPopMatrix(); glMatrixMode(GL_MODELVIEW); diff -r 7eea82cea9d2 -r 1102327fe85f src/vr.h --- a/src/vr.h Fri Oct 30 06:12:48 2015 +0200 +++ b/src/vr.h Fri Oct 30 06:34:00 2015 +0200 @@ -21,6 +21,7 @@ /* misc options */ #define VR_NULL_STEREO_SBS "null-stereo-sbs" /* bool, default 0: draw side-by-side */ #define VR_NULL_STEREO_GL "null-stereo-gl" /* bool, default 0: use quad-buffer stereo */ +#define VR_NULL_STEREO_REDCYAN "null-stereo-redcyan" /* bool, default 0: draw red-cyan anaglyph stereo */ enum { VR_EYE_LEFT,