Commit: fc485302cc3568f3125a0378cde9830c764a8943
Author: Dalai Felinto
Date:   Mon Sep 26 14:31:41 2016 +0000
Branches: blender2.8
https://developer.blender.org/rBfc485302cc3568f3125a0378cde9830c764a8943

immediate mode: using texture shader for stereo drawing

(for side-by-side and top-bottom stereo modes)

===================================================================

M       source/blender/windowmanager/intern/wm_stereo.c

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_stereo.c 
b/source/blender/windowmanager/intern/wm_stereo.c
index 1c1c2ad..ea9a09d 100644
--- a/source/blender/windowmanager/intern/wm_stereo.c
+++ b/source/blender/windowmanager/intern/wm_stereo.c
@@ -54,6 +54,7 @@
 
 #include "GPU_glew.h"
 #include "GPU_basic_shader.h"
+#include "GPU_immediate.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -203,23 +204,33 @@ static void wm_method_draw_stereo3d_sidebyside(wmWindow 
*win)
                        halfy /= triple->y;
                }
 
+               VertexFormat *format = immVertexFormat();
+               unsigned texcoord = add_attrib(format, "texcoord", GL_FLOAT, 2, 
KEEP_FLOAT);
+               unsigned pos = add_attrib(format, "position", GL_FLOAT, 2, 
KEEP_FLOAT);
+
                glEnable(triple->target);
+               immBindBuiltinProgram((triple->target == GL_TEXTURE_2D) ? 
GPU_SHADER_2D_TEXTURE_2D : GPU_SHADER_2D_TEXTURE_RECT);
+
                glBindTexture(triple->target, triple->bind);
 
-               glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
-               glBegin(GL_QUADS);
-               glTexCoord2f(halfx, halfy);
-               glVertex2f(soffx, 0);
+               immUniform1i("texture_map", 0);
+
+               immBegin(GL_QUADS, 4);
+
+               immAttrib2f(texcoord, halfx, halfy);
+               immVertex2f(pos, soffx, 0.0f);
+
+               immAttrib2f(texcoord, ratiox + halfx, halfy);
+               immVertex2f(pos, soffx + (sizex * 0.5f), 0.0f);
 
-               glTexCoord2f(ratiox + halfx, halfy);
-               glVertex2f(soffx + (sizex * 0.5f), 0);
+               immAttrib2f(texcoord, ratiox + halfx, ratioy + halfy);
+               immVertex2f(pos, soffx + (sizex * 0.5f), sizey);
 
-               glTexCoord2f(ratiox + halfx, ratioy + halfy);
-               glVertex2f(soffx + (sizex * 0.5f), sizey);
+               immAttrib2f(texcoord, halfx, ratioy + halfy);
+               immVertex2f(pos, soffx, sizey);
 
-               glTexCoord2f(halfx, ratioy + halfy);
-               glVertex2f(soffx, sizey);
-               glEnd();
+               immEnd();
+               immUnbindProgram();
 
                glBindTexture(triple->target, 0);
                glDisable(triple->target);
@@ -262,23 +273,33 @@ static void wm_method_draw_stereo3d_topbottom(wmWindow 
*win)
                        halfy /= triple->y;
                }
 
+               VertexFormat *format = immVertexFormat();
+               unsigned texcoord = add_attrib(format, "texcoord", GL_FLOAT, 2, 
KEEP_FLOAT);
+               unsigned pos = add_attrib(format, "position", GL_FLOAT, 2, 
KEEP_FLOAT);
+
                glEnable(triple->target);
+               immBindBuiltinProgram((triple->target == GL_TEXTURE_2D) ? 
GPU_SHADER_2D_TEXTURE_2D : GPU_SHADER_2D_TEXTURE_RECT);
+
                glBindTexture(triple->target, triple->bind);
 
-               glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
-               glBegin(GL_QUADS);
-               glTexCoord2f(halfx, halfy);
-               glVertex2f(0, soffy);
+               immUniform1i("texture_map", 0);
+
+               immBegin(GL_QUADS, 4);
+
+               immAttrib2f(texcoord, halfx, halfy);
+               immVertex2f(pos, 0.0f, soffy);
+
+               immAttrib2f(texcoord, ratiox + halfx, halfy);
+               immVertex2f(pos, sizex, soffy);
 
-               glTexCoord2f(ratiox + halfx, halfy);
-               glVertex2f(sizex, soffy);
+               immAttrib2f(texcoord, ratiox + halfx, ratioy + halfy);
+               immVertex2f(pos, sizex, soffy + (sizey * 0.5f));
 
-               glTexCoord2f(ratiox + halfx, ratioy + halfy);
-               glVertex2f(sizex, soffy + (sizey * 0.5f));
+               immAttrib2f(texcoord, halfx, ratioy + halfy);
+               immVertex2f(pos, 0.0f, soffy + (sizey * 0.5f));
 
-               glTexCoord2f(halfx, ratioy + halfy);
-               glVertex2f(0, soffy + (sizey * 0.5f));
-               glEnd();
+               immEnd();
+               immUnbindProgram();
 
                glBindTexture(triple->target, 0);
                glDisable(triple->target);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to