libgoatvr
changeset 32:7eea82cea9d2
added preliminary support for quad-buffer stereo fallback drawing
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Fri, 30 Oct 2015 06:12:48 +0200 |
parents | ec6edfe7774c |
children | 1102327fe85f |
files | src/vr.c src/vr.h |
diffstat | 2 files changed, 22 insertions(+), 7 deletions(-) [+] |
line diff
1.1 --- a/src/vr.c Sun Apr 12 02:02:04 2015 +0300 1.2 +++ b/src/vr.c Fri Oct 30 06:12:48 2015 +0200 1.3 @@ -43,10 +43,15 @@ 1.4 set_option_vec3f(defopt, VR_LEYE_OFFSET, -DEF_IPD * 0.5f, 0.0f, 0.0f); 1.5 set_option_vec3f(defopt, VR_REYE_OFFSET, DEF_IPD * 0.5f, 0.0f, 0.0f); 1.6 1.7 - if((env = getenv("VR_NULL_STEREO")) && atoi(env)) { 1.8 - set_option_int(defopt, VR_NULL_STEREO, 1); 1.9 + if((env = getenv("VR_NULL_STEREO_SBS")) && atoi(env)) { 1.10 + set_option_int(defopt, VR_NULL_STEREO_SBS, 1); 1.11 } else { 1.12 - set_option_int(defopt, VR_NULL_STEREO, 0); 1.13 + set_option_int(defopt, VR_NULL_STEREO_SBS, 0); 1.14 + } 1.15 + if((env = getenv("VR_NULL_STEREO_GL")) && atoi(env)) { 1.16 + set_option_int(defopt, VR_NULL_STEREO_GL, 1); 1.17 + } else { 1.18 + set_option_int(defopt, VR_NULL_STEREO_GL, 0); 1.19 } 1.20 } 1.21 1.22 @@ -364,7 +369,8 @@ 1.23 1.24 static void fallback_present(void) 1.25 { 1.26 - int i, show_both = vr_geti(VR_NULL_STEREO); 1.27 + int i, show_sbs = vr_geti(VR_NULL_STEREO_SBS); 1.28 + int use_quadbuf = vr_geti(VR_NULL_STEREO_GL); 1.29 1.30 glPushAttrib(GL_ENABLE_BIT | GL_TRANSFORM_BIT); 1.31 1.32 @@ -386,7 +392,7 @@ 1.33 for(i=0; i<2; i++) { 1.34 float x0, x1; 1.35 1.36 - if(show_both) { 1.37 + if(show_sbs && !use_quadbuf) { 1.38 x0 = i == 0 ? -1 : 0; 1.39 x1 = i == 0 ? 0 : 1; 1.40 } else { 1.41 @@ -396,6 +402,10 @@ 1.42 1.43 glBindTexture(GL_TEXTURE_2D, rtarg[i].tex); 1.44 1.45 + if(use_quadbuf) { 1.46 + glDrawBuffer(GL_BACK_LEFT + i); 1.47 + } 1.48 + 1.49 glBegin(GL_QUADS); 1.50 glTexCoord2f(rtarg[i].umin, rtarg[i].vmin); 1.51 glVertex2f(x0, -1); 1.52 @@ -407,7 +417,11 @@ 1.53 glVertex2f(x0, 1); 1.54 glEnd(); 1.55 1.56 - if(!show_both) break; 1.57 + if(!show_sbs && !use_quadbuf) break; 1.58 + } 1.59 + 1.60 + if(use_quadbuf) { 1.61 + glDrawBuffer(GL_BACK); 1.62 } 1.63 1.64 glPopMatrix();
2.1 --- a/src/vr.h Sun Apr 12 02:02:04 2015 +0300 2.2 +++ b/src/vr.h Fri Oct 30 06:12:48 2015 +0200 2.3 @@ -19,7 +19,8 @@ 2.4 #define VR_LEYE_OFFSET "left-eye-offset" /* stereo offset from center of the head */ 2.5 #define VR_REYE_OFFSET "right-eye-offset" /* stereo offset from center of the head */ 2.6 /* misc options */ 2.7 -#define VR_NULL_STEREO "null-stereo" /* bool, default 0 */ 2.8 +#define VR_NULL_STEREO_SBS "null-stereo-sbs" /* bool, default 0: draw side-by-side */ 2.9 +#define VR_NULL_STEREO_GL "null-stereo-gl" /* bool, default 0: use quad-buffer stereo */ 2.10 2.11 enum { 2.12 VR_EYE_LEFT,